检查日期和时间是否超过过去的x小时

时间:2019-02-21 20:09:30

标签: mysql date

我有一个表,其中有一个日期列,然后有一个time in and time out列-在某些情况下,我需要检查的时间可能是昨天,而这正是我在努力的地方。

我无法更改表格布局以使用日期时间,因为这是我正在做少量工作的更广泛系统的一部分。

例如,现在是2019-02-21 20:01:00,我正在查找时间超过8小时的所有记录。

这是我正在使用的查询:

SELECT id from table where
    ((date='2019-02-21' and time_in < date_sub(now(),interval 8 hour)) 
or 
    (date='2019-02-20' and time_in < date_add(now(), interval 16 hour))) 
and 
    time_out='00:00:00'
  • 如果我的日期为2019-02-21,时间为10:00,则此方法有效
  • 如果我的日期为2019-02-20,时间为10:00,那么此方法有效
  • 如果我的日期为2019-02-21,时间为23:00,则此方法无效

是否可以在时间加上间隔的负值使时间超过午夜/ 00:00的情况下使此方法起作用?

1 个答案:

答案 0 :(得分:1)

使用TIMESTAMP函数组合日期和时间,然后与日期进行比较:

WHERE TIMESTAMP(date, time_in) < CURRENT_TIMESTAMP - INTERVAL 8 HOUR