Mysql 不在时间和日期之间


user | completed
mike | 2016-07-10 19:00:00
john | 2016-07-11 08:00:00  

我正在尝试选择数据库中完成的行不在前一天 14:00 和当天 10:00 之前的所有行。该脚本设计为每天 10:30 运行

我试过这个

SELECT name FROM daily_tracking WHERE completed NOT BETWEEN now() - interval 1 day AND NOW() - INTERVAL 8 hour

你应该使用date_sub

SELECT name 
FROM daily_tracking 
WHERE completed NOT BETWEEN date_sub(NOW(), interval 1 day ) 
   AND date_sub(NOW(),  INTERVAL 8 hour)

我不依赖于脚本运行的确切时间。 相反,请使用基于当前日期的算术:

SELECT dt.name
FROM daily_tracking dt
WHERE completed < date_sub(curdate(), interval (24 - 14) hour) or
      completed > date_add(curdate(), interval 10 hour);

无论脚本运行的时间如何,这都将在给定的日期起作用。

你也可以这样写,我更喜欢...

SELECT dt.name
  FROM daily_tracking dt
 WHERE dt.completed BETWEEN CURDATE() - INTERVAL 14 HOUR AND CURDATE() + INTERVAL 10 HOUR;

相关内容

  • 没有找到相关文章

最新更新