Hello! 欢迎来到小浪资源网!


如何在 MySQL 中针对包含多个日期值的字段进行特定日期范围查询?


如何在 MySQL 中针对包含多个日期值的字段进行特定日期范围查询?

在存在多个日期值的同个字段中进行特定日期范围查询

数据库中,某些字段可能存在多个日期值,例如:”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};

这个查询判断了四种可能的情况:

  1. 第一个分割的时间值在给定范围内
  2. 最后一个分割的时间值在给定范围内
  3. 给定范围开始时间在时间值范围内
  4. 给定范围结束时间在时间值范围内

如果满足任何一种情况,查询将返回该记录,并且只返回符合条件的记录中最新的一条。

相关阅读