我有一个事件表,其中记录了一个开始和结束时间,作为MySQL DATETIME对象(格式YYYY-MM-DD HH:MM:SS。我想查找在特定日期范围内发生的所有事件。但是,事件可能跨越多天(并且超出了我的范围)日期范围,但是如果它们与我的日期范围重叠1秒或更长时间,我想返回它们。
YYYY-MM-DD HH:MM:SS
有什么建议吗?
这将找到范围内完全包含的每个事件:
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