我有一個像下面如何在今天和今天午夜之間用MySQL編寫查詢?
SELECT * FROM programs where startTime between now() and now() + INTERVAL 1 DAY;
查詢是否可以寫信跟今天在MySQL的午夜之間,隨着時間的推移查詢?
類似下面
SELECT * FROM programs where startTime between now() and now() + midnight 12;
我有一個像下面如何在今天和今天午夜之間用MySQL編寫查詢?
SELECT * FROM programs where startTime between now() and now() + INTERVAL 1 DAY;
查詢是否可以寫信跟今天在MySQL的午夜之間,隨着時間的推移查詢?
類似下面
SELECT * FROM programs where startTime between now() and now() + midnight 12;
我建議你總是使用CL用於日期和時間比較的打開(關閉 - 打開)時間間隔。 BETWEEN
表示封閉間隔(來自兩側)。一個很好的解釋是在@Aaron Bertrand's博客文章:What do BETWEEN and the devil have in common?。下面就來編寫查詢的方式:
SELECT *
FROM programs
WHERE startTime >= NOW()
AND startTime < CURRENT_DATE() + INTERVAL 1 DAY ;
SELECT * FROM programs where startTime between now() and CURRENT_DATE() + INTERVAL 1 DAY;
當前日期返回一天的開始,那麼我們就加1天才能到它的結束。
試試這個::
SELECT * FROM programs where startTime between now() and DATE_SUB(CURDATE(), INTERVAL 1 DAY)
這是不正確的語法,你需要''之間'多一個參數' –
@ErikEkman:Thanks mate for指向這個 –
你可以嘗試以下方法:可能是它的長,雖然。
樣品表:
ID STIME ETIME
1 December, 05 2012 05:23:00+0000 December, 05 2012 07:30:00+0000
2 December, 05 2012 10:23:00+0000 December, 05 2012 12:30:00+0000
3 December, 06 2012 22:45:00+0000 December, 07 2012 01:00:00+0000
4 December, 06 2012 22:23:00+0000 December, 06 2012 23:55:00+0000
5 December, 06 2012 20:23:00+0000 December, 06 2012 22:55:00+0000
6 December, 07 2012 10:23:00+0000 December, 07 2012 12:30:00+0000
查詢
SELECT *,curtime() FROM prog
WHERE date(stime) = date(now())
AND date(etime) = date(now())
AND time_to_sec(SUBTIME(etime,'24:00:00')) >= 0
;
結果
ID STIME ETIME
4 December, 06 2012 22:23:00+0000 December, 06 2012 23:55:00+0000
5 December, 06 2012 20:23:00+0000 December, 06 2012 22:55:00+0000
SELECT *
FROM programs
WHERE DATE(startTime) = CURRENT_DATE AND startTime > CURRENT_TIMESTAMP
這不是非常友好的索引 - 請參閱http://stackoverflow.com/a/95256/623041 – eggyal
這將包括'00:00:00'的明天;目前還不清楚這是否可取。 – eggyal
是的,你可能想使用'where startTime> = now()和startTime