php中文网

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

php中文网

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

在数据库中,某些字段可能存在多个日期值,例如:"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. 给定范围结束时间在时间值范围内

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

以上就是如何在 MySQL 中针对包含多个日期值的字段进行特定日期范围查询?的详细内容,更多请关注php中文网其它相关文章!