在存在多个日期值的同个字段中进行特定日期范围查询
在数据库中,某些字段可能存在多个日期值,例如:”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};
这个查询判断了四种可能的情况:
- 第一个分割的时间值在给定范围内
- 最后一个分割的时间值在给定范围内
- 给定范围开始时间在时间值范围内
- 给定范围结束时间在时间值范围内
如果满足任何一种情况,查询将返回该记录,并且只返回符合条件的记录中最新的一条。