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