如何在 MySQL 中針對(duì)包含多個(gè)日期值的字段進(jìn)行特定日期范圍查詢?

如何在 MySQL 中針對(duì)包含多個(gè)日期值的字段進(jìn)行特定日期范圍查詢?

在存在多個(gè)日期值的同個(gè)字段中進(jìn)行特定日期范圍查詢

數(shù)據(jù)庫(kù)中,某些字段可能存在多個(gè)日期值,例如:”2022-09-14 11:38:21,2022-09-14 18:00:00″。通常情況下,查詢這類字段時(shí),只能通過(guò)簡(jiǎn)單的范圍查詢來(lái)獲取特定日期內(nèi)的數(shù)據(jù),而無(wú)法針對(duì)分割后的時(shí)間范圍進(jìn)行查詢。

mysql 查詢解決方案

要實(shí)現(xiàn)針對(duì)分割后時(shí)間范圍的查詢,需要將該字段中的每個(gè)時(shí)間作為一個(gè)獨(dú)立條件進(jìn)行判斷。以下是一個(gè)使用 substring_index() 函數(shù)來(lái)實(shí)現(xiàn)此目的的 mysql 查詢示例:

select     epr.* from     event_plan_record epr where     substring_index(epr.realStartTime, ',', 1) BETWEEN #{startDate} AND #{endDate}     or substring_index(epr.realStartTime, ',', -1) BETWEEN #{startDate} AND #{endDate}     or #{startDate} BETWEEN substring_index(epr.realStartTime, ',', 1) AND substring_index(epr.realStartTime, ',', -1)     or #{endDate} BETWEEN substring_index(epr.realStartTime, ',', 1) AND substring_index(epr.realStartTime, ',', -1) order by epr.realStartTime desc limit #{page},#{count};

這個(gè)查詢判斷了四種可能的情況:

  1. 第一個(gè)分割的時(shí)間值在給定范圍內(nèi)
  2. 最后一個(gè)分割的時(shí)間值在給定范圍內(nèi)
  3. 給定范圍開始時(shí)間在時(shí)間值范圍內(nèi)
  4. 給定范圍結(jié)束時(shí)間在時(shí)間值范圍內(nèi)

如果滿足任何一種情況,查詢將返回該記錄,并且只返回符合條件的記錄中最新的一條。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享