从开始和结束日期开始从MySQL表中提取事件,保留当前活动的事件

时间:2013-04-16 15:01:27

标签: php mysql date

我有一个包含事件数据的MySQL表。重要的列是from_date和to_date。两者都包含纪元时间戳,用于表示事件何时开始和结束。

我查询表格以使用以下方式提取指定日期范围内的事件:

from_date >= $from_date AND to_date <= $to_date

这一切都很好,但我现在的问题是,在from_date之前启动但与to_date规则匹配的事件未被选中,即事件在from_date之前开始但仍处于活动状态...同样适用于匹配from_date规则但传递to_date。我还需要在结果中看到“活动”事件。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

将支票更改为:

`from_data` BETWEEN $from AND $to OR `to_date` BETWEEN $from AND $to

简体中文:活动在$from$to之间开始或结束。

如果您的$from$to为:10:0011:00。然后这个查询会给你:

9:00 9:50 (no)
9:00 12:00 (yes)
9:00 10:10 (yes)
10:20 10:30 (yes)
10:50 11:10 (yes)
11:20 12:00 (no)

答案 1 :(得分:2)

如果我们搜索所有在$ to_date之前开始并在$ from_date之后结束的事件,它应该提取您要查找的内容。

from_date <= $to_date AND to_date >= $from_date

如果您的$ from和$ to是:10:00和11:00。然后这个查询会给你:

  • 9:00 9:50(不是因为9:50&lt; 10)
  • 9:00 10:10(是)
  • 10:20 10:30(是)
  • 10:50 11:10(是)
  • 11:20 12:00(不是因为11:20&gt; 11:00)
  • 9:00 12:00(是的,因为9是&lt; 11和12&gt; 10)

答案 2 :(得分:0)

我假设你以某种方式跟踪活动事件,也许你可以试试这个:

  (from_date >= $from_date AND to_date <= $to_date) OR active = 1

这是一个不复制/粘贴代码的想法