我有活动表。我想获取在搜索日期之间运行的所有事件记录。
Event Table
id title start_date_time end_date_time
-----------------------------------------------------------------
1 xyz 2014-08-12 11:40:00 2014-08-23 10:30:00
2 pqr 2014-09-05 11:40:00 2014-09-25 09:20:00
3 abc 2014-10-10 11:40:00 2014-10-25 10:00:00
例如,我搜索了2014-08-15和2014-09-10之间运行的事件。
预期结果将是:
id title start_date_time end_date_time
-----------------------------------------------------------------
1 xyz 2014-08-12 11:40:00 2014-08-23 10:30:00
2 pqr 2014-09-05 11:40:00 2014-09-25 09:20:00
那么获得预期结果的查询是什么?
答案 0 :(得分:0)
假设您有$startdate
和$enddate
,那么您希望此where
子句用于重叠:
select e.*
from events e
where $startdate <= e.end_date_time and
$enddate >= e.start_date_time;
<=
或<
的选择取决于活动时间是否包含结束日期。
逻辑很简单:如果事件在期间结束之前开始并且在期间开始之后结束,则存在重叠。