2

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

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

from_date >= $from_date AND to_date <= $to_date

这一切都很好,但我现在的问题是未选择在 from_date 之前开始但与 to_date 规则匹配的事件,即事件在 from_date 之前开始但仍处于活动状态......对于匹配 from_date 的事件也是如此规则但通过 to_date。我还需要在结果中看到“活动”事件。

有什么建议么?

4

3 回答 3

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 < 10)
  • 9:00 10:10(是)
  • 10:20 10:30(是)
  • 10:50 11:10(是)
  • 11:20 12:00(没有,因为 11:20 > 11:00)
  • 9:00 12:00(是的,因为 9 < 11 和 12 > 10)
于 2013-04-16T15:11:54.950 回答
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)
于 2013-04-16T15:03:52.177 回答
0

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

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

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

于 2013-04-16T15:03:38.343 回答