如何在所选日期范围之间选择运行事件?

时间:2014-08-23 11:40:56

标签: php mysql

我有活动表。我想获取在搜索日期之间运行的所有事件记录。

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

那么获得预期结果的查询是什么?

1 个答案:

答案 0 :(得分:0)

假设您有$startdate$enddate,那么您希望此where子句用于重叠:

select e.*
from events e
where $startdate <= e.end_date_time and
      $enddate >= e.start_date_time;

<=<的选择取决于活动时间是否包含结束日期。

逻辑很简单:如果事件在期间结束之前开始并且在期间开始之后结束,则存在重叠。