1. 程式人生 > >【關於MySQL查詢日期區間的隱藏問題】MySQL根據日期查詢資料不對

【關於MySQL查詢日期區間的隱藏問題】MySQL根據日期查詢資料不對

問題描述:

假設一個表中有如下資料:

查詢2018-08-17到2018-08-19的資料,正確答案顯而易見是5條

但如果使用下面兩個sql語句,你會看到不同的結果:

第一種:SELECT * from date_test WHERE test_date >= '2018-08-17' AND test_date <= '2018-08-19'

第二種:SELECT * from date_test WHERE test_date >= '2018-08-17 00:00:00' AND test_date <= '2018-08-19 23:59:59'

發現了吧,當查詢時間精確到時分秒的時候,“<=”後面的日期的資料就能夠顯示出來了

原因:

如上圖所示,因為在Mysql中,datetime格式是精確到時分秒的,如果沒有填寫,預設為“00:00:00”,這個在表中id=1和id=2的資料中就可以看出來(我在插入資料的時候,故意沒有刪除了具體時間,點選提交之後,自動補充為了00:00:00)

所以,第一種方法相當於查看了17號00:00:00到19號00:00:00的資料