經測試 mysql 的 between and 是 左閉右閉 的,用於查詢某一天資料的寫法

guile發表於2019-03-11

經測試 mysql 的 between and 是 左閉右閉 的,也就是包括查詢的 開始值 和 結束值。

所以用 mysql 的 between and 查詢某一天的記錄,應該寫成:

SELECT * from time_table ta
where ta.CREATE_TIME
between '2019-03-01 00:00:00'
and '2019-03-01 23:59:59'     


左閉右閉,那就還可以寫成:
where ta.CREATE_TIME >= '2019-03-01 00:00:00'
and ta.CREATE_TIME <= '2019-03-01 23:59:59'

 

不能寫成:

SELECT * from time_table ta
where ta.CREATE_TIME
between '2019-03-01 00:00:00'
and '2019-03-02 00:00:00'

也不能寫成:
SELECT * from time_table ta
where ta.CREATE_TIME
between '2019-03-01'
and DATE_ADD('2019-03-01', INTERVAL 1 DAY);  // DATE_ADD 天數增加1

因為如果資料庫裡有 2019-03-02 00:00:00 這個時刻的記錄,那也會被一起查出來,
那結果就是 03-01 和 03-02 兩天的資料了。


 

另外要注意 ‘00:00:00’ ,在查詢時不要寫成 ‘24:00:00’,會出問題。
這個問題參考:  https://www.cnblogs.com/lj312/p/7238211.html

 

還有日期字串的格式要符合 yyyy-MM-dd HH:mm:ss,否則查詢可能會出問題。
如寫成 '2009-12-1 10:5:5' 這樣格式的字串, 查詢就可能會出問題。
這個問題參考:  https://qhuwn.iteye.com/blog/544338

相關文章