【SQL】對於日期DATETIME的條件篩選


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'就查不到了,當然如果你覺得你記錄不可能有這么巧有這個時間的,也可以用。這可以比較方便的使用到這個時間字符串而不做其他修改。

如果您看了本篇博客,覺得對您有所收獲,請點擊右下角的 [推薦]

如果您想轉載本博客,請注明出處

如果您對本文有意見或者建議,歡迎留言

感謝您的閱讀,請關注我的后續博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM