SQL查找即将到来的日期和时间

时间:2016-11-17 13:30:12

标签: sql

SQL语句:

SELECT * FROM table 
WHERE eventdate >= DATE(NOW()) 
AND eventtime > TIME(NOW()) 
ORDER BY eventdate ASC, eventtime ASC;

目标是选择接下来要发生的事件。只要在同一天没有两个事件,它就可以正常工作。例如:

Event 1, 11/17/2016 7:00am
Event 2, 11/17/2016 2:00pm
Event 3, 11/18/2016 9:00am

我希望选择事件2,因为它在17日上午7点通过。上面的陈述仍然会选择事件1.

3 个答案:

答案 0 :(得分:1)

这应该有效:

SELECT * FROM table 
WHERE eventdate > DATE(NOW())
OR
    (eventdate = DATE(NOW()) AND eventtime > TIME(NOW()) )

ORDER BY eventdate ASC, eventtime ASC;

基本上你比较日期是将来(明天)还是日期是今天,时间过去了。

如果您的日期是将来的话,那么在这种情况下您并不关心时间。

试试吧。

答案 1 :(得分:0)

我需要将df2eventdate eventtime中存储的值存储在您的fields上下文中。因为如果你正在检查table,如果时间过去,就不应该选择这个事件。

答案 2 :(得分:0)

根据评论中的确定,问题在于数据库所在的服务器当前使用的时区。因此,并且您使用的是PHPmyAdmin,我相信您无权更改服务器时区。

您可能的解决方案是:

  • 使用已在MST(UTC-07)中的数据或服务器所在的任何时区
  • 使用当前数据并减去2小时或convert the data to a time zone
  • 重写查询以使用NOW()+ 2小时