Mysql不在时间和日期之间

Mysql不在时间和日期之间,mysql,datetime,Mysql,Datetime,我正在尝试选择数据库中的所有行,其中完成的行不在前一天的14:00和10:00之前的当天之间。脚本设计为每天10:30运行 我试过这个 user | completed mike | 2016-07-10 19:00:00 john | 2016-07-11 08:00:00 您应该使用date\u sub SELECT name FROM daily_tracking WHERE completed NOT BETWEEN now() - interval 1 day AND NOW()

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

我试过这个

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

您应该使用date\u sub

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

您应该使用date\u sub

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

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

SELECT name 
FROM daily_tracking 
WHERE completed NOT BETWEEN date_sub(NOW(), interval 1 day ) 
   AND date_sub(NOW(),  INTERVAL 8 hour)
选择dt.name
来自每日跟踪数据
完成时日期添加(curdate(),间隔10小时);

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

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

SELECT name 
FROM daily_tracking 
WHERE completed NOT BETWEEN date_sub(NOW(), interval 1 day ) 
   AND date_sub(NOW(),  INTERVAL 8 hour)
选择dt.name
来自每日跟踪数据
完成时日期添加(curdate(),间隔10小时);

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

您也可以这样编写,我更喜欢这样

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 completed < date_sub(curdate(), interval (24 - 14) hour) or
      completed > date_add(curdate(), interval 10 hour);

您应该考虑在执行查询时给我们的错误/问题。您应该考虑在执行查询时给我们带来的错误/问题。