一尘不染

是否有任何MySQL函数可以获取开始日期或结束日期在给定开始日期和结束日期之间的所有行?

mysql

我有一个事件表,其中记录了一个开始和结束时间,作为MySQL DATETIME对象(格式YYYY-MM-DD HH:MM:SS。我想查找在特定日期范围内发生的所有事件。但是,事件可能跨越多天(并且超出了我的范围)日期范围,但是如果它们与我的日期范围重叠1秒或更长时间,我想返回它们。

有什么建议吗?


阅读 627

收藏
2020-05-17

共1个答案

一尘不染

这将找到范围内完全包含的每个事件:

SELECT * FROM table WHERE start_date BETWEEN start_of_range AND end_of_range 
                      AND stop_date  BETWEEN start_of_range AND end_of_range

这将查找事件的任何部分与范围的任何部分重叠的任何事件:

SELECT * FROM table WHERE start_date <= end_of_range 
                      AND stop_date  >= start_of_range
2020-05-17