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;