mysql - 在开始日期和结束日期之间查找日期的查询,其中日期可能重置为 0

  显示原文与译文双语对照的内容
0 0

我们在应用程序中有周重复事件,并决定将每个事件的开始时间和结束时间存储为每周的秒数。 这使得查询。排序和 等等 更加容易。

但是,有一个小问题: 如果我们想要获得一个周期内发生的事件,那么这个事件可以能会导致这个错误。

正常查询,该查询工作时间为 99%,从而获取记录和结束时间之间的记录。

time = 216000 # Tuesday, 12:00PM
SELECT * FROM events WHERE start_time <= 216000 AND end_time> 216000

难点是当有一个事件开始时,例如星期六下午,星期六下午,并在星期日结束,在::

time = 3600 # Sunday, 1am
SELECT * FROM events WHERE start_time <= 3600 AND end_time> 3600

因为 start_time 不会小于 3600,因为它不会小于,因为它从每周周期的末尾开始。

我一直在尝试找出一个好的解决方案,但是到目前为止,我想打开这个解决方案。 我觉得有一些简单的数学方程可以用来完成这项工作,但数学不是我最好的主题:

请让我知道,如果我需要解释更好或者更好的例子。

谢谢!

时间:原作者:8个回答

0 0

你可以尝试一些类似的东西:

select * from events 
 where (start_time <= 3600 or start_time>end_time) and end_time> 3600; 

这样你就能够捕获在休息时间之前启动的事件,并且在指定的时间内仍然发生。

原作者:
0 0

你可以很高的开始时间。

从 start_time <= 590000和 end_time> 3600的事件中选择 *

原作者:
0 0

你应该把你的时间作为时间戳,并计算每个星期的start_time,做一些数学。 这样可以防止你所描述的问题,然后:

select * from events where (start_time <SUNDAYS_TIMESTAMP and end_time> SUNDAYS_TIMESTAMP 或者你想要尝试的东西。

你应该以通用格式存储数据,并从中找出你想要的。

原作者:
...