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

我想選擇數據庫中所有行的完成行不在前一天14:00和當天10:00前一天之間的所有行。該腳本設計爲每天10:30Mysql不在時間和日期之間

來運行我已經試過這

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

你應該考慮給我們的錯誤/表演查詢當你的問題 –

回答

0

你也可以把它寫這種方式,我更喜歡......

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

你應該使用DATE_SUB

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

我不會依賴於準確的時間,當腳本正在運行。相反,使用基於當前日期計算:

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

這將在某一天的工作,不管腳本運行的時間。