我有一个窘境。我有一个包含两列的数据库,这两列都是时间戳,它们表示事件的开始和结束时间。
我还有两个时间表示开始和结束周期,我需要使用它来查询数据库以找出事件与开始和结束周期重叠的行。
例如,如果给定的时间是 06:00 到 23:00,但反过来也是如此,即 23:00 到 06:00(即一天晚上 11 点到第二天早上 6 点),这应该有效。
纵观事件,
Ev1 开始 '2015-06-05 10:08:57' 结束 '2015-06-05 16:18:27'
Ev2 开始 '2015-06-05 16:08:57' 结束 '2015-06-05 23:18:27'
ev3 开始 '2015-06-10 19:30:47' 结束 '2015-06-11 01:43:17'
从和到时间的时间为 12:00 和 17:00 应返回 Ev1 和 Ev2。17:00 到 12:00 的时间应返回 Ev2 和 Ev3。
当有人纯粹寻找在特定时间之后或特定时间之前发生的任何事件时,我已经进行了搜索,这是当给出两个时间然后考虑超过一天的时间时。
我已经启动了一个预构建的架构的SQLFiddle:http://sqlfiddle.com/#!9/13616/1/0
任何帮助将不胜感激!
问候
[Event.start] <= [Timeframe.start] AND [Event.end] >= [Timeframe.start]
OR
[Event.start] BETWEEN [Timeframe.start] AND [Timeframe.end]