sql查詢時間大於某天的數據
如查詢時間大於2020/05/14這一天的數據,首先可能想到這樣寫
select * from STUDENT where TIME>'2020/05/14'
但這種方式寫出來,查詢的結果還是會有5/14當天的,原因是實際上,在解讀這語句時會翻譯成TIME>'2020/05/14 00:00:00'也就是說,比如14號的12點也是滿足的。
所以寫的時候最好的寫法,應該是
select * from STUDENT where TIME>DATEADD(SECOND, -1, '2020/05/15')
對於MySQL應該這樣寫
select * from STUDENT where TIME>DATE_ADD('2020/05/15', INTERVAL -1 SECOND)
這意思就是說TIME>'2020/05/14 23:59:59'
DATEADD(datepart, number, date)
- datepart
指的是修改的類型,一般有YEAR,MONTH,DAY,HOUR,MINUTE,SECOND
分別對應的就是YEAR/MONTH/DAY HOUR:MINUTE:SECOND
更詳細的可看W3school- number
修改的值,正數是未來的日子。負數是過去的日子- date
合法日期表達式
當然對於我遇到的情況,還有一種方式,但是不嚴謹的解決方案
select * from STUDENT where TIME>DATEADD(DAY,1,'2020/05/14')
MySQL語句
select * from STUDENT where TIME>DATE_ADD('2020/05/14', INTERVAL 1 DAY)
這種方式也可以查到,但沒有排除當剛好有條記錄是'2020/05/15 00:00:00'就查不到了,當然如果你覺得你記錄不可能有這么巧有這個時間的,也可以用。這可以比較方便的使用到這個時間字符串而不做其他修改。
如果您看了本篇博客,覺得對您有所收獲,請點擊右下角的 [推薦]
如果您想轉載本博客,請注明出處
如果您對本文有意見或者建議,歡迎留言
感謝您的閱讀,請關注我的后續博客