在存在多個(gè)日期值的同個(gè)字段中進(jìn)行特定日期范圍查詢
在數(shù)據(jù)庫中,某些字段可能存在多個(gè)日期值,例如:”2022-09-14 11:38:21,2022-09-14 18:00:00″。通常情況下,查詢這類字段時(shí),只能通過簡單的范圍查詢來獲取特定日期內(nèi)的數(shù)據(jù),而無法針對分割后的時(shí)間范圍進(jìn)行查詢。
mysql 查詢解決方案
要實(shí)現(xiàn)針對分割后時(shí)間范圍的查詢,需要將該字段中的每個(gè)時(shí)間作為一個(gè)獨(dú)立條件進(jìn)行判斷。以下是一個(gè)使用 substring_index() 函數(shù)來實(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};
登錄后復(fù)制
這個(gè)查詢判斷了四種可能的情況:
- 第一個(gè)分割的時(shí)間值在給定范圍內(nèi)
- 最后一個(gè)分割的時(shí)間值在給定范圍內(nèi)
- 給定范圍開始時(shí)間在時(shí)間值范圍內(nèi)
- 給定范圍結(jié)束時(shí)間在時(shí)間值范圍內(nèi)
如果滿足任何一種情況,查詢將返回該記錄,并且只返回符合條件的記錄中最新的一條。