MYSQL中 datediff、timestampdiff函式的使用
阿新 • • 發佈:2019-02-02
對mysql中日期範圍搜尋的大致有三種方式:
1、between and語句;
2、datediff函式;
3、timestampdiff函式;
下面就具體說明下這三種方式:
第一種: between and語句
select * from dat_document where commit_date between '2018-07-01' and '2018-07-04'
結果是1號到3號的資料,這是因為時間範圍顯示的實際上只是‘2018-07-01 00:00:00’到'2018-07-04 00:00:00'之間的資料,而'2018-07-04'的資料就無法顯示出來,between and對邊界還需要進行額外的處理.
第二種: datediff函式
datediff函式返回兩個日期之間的天數
語法:DATEDIFF(date1,date2)
SELECT DATEDIFF('2018-07-01','2018-07-04');
執行結果:-3
所以,datediff函式對時間差值的計算方式為date1-date2的差值。
第三種: timestampdiff函式
timestampdiff函式日期或日期時間表達式之間的整數差。
語法:TIMESTAMPDIFF(interval,datetime1,datetime2),比較的單位interval可以為以下數值
- FRAC_SECOND。表示間隔是毫秒
- SECOND。秒
- MINUTE。分鐘
- HOUR。小時
- DAY。天
- WEEK。星期
- MONTH。月
- QUARTER。季度
- YEAR。年
select TIMESTAMPDIFF(DAY,'2018-07-01 09:00:00','2018-07-04 12:00:00');
執行結果:3所以,timestampdiff函式對日期差值的計算方式為datetime2-datetime1的差值。
請注意:DATEDIFF,TIMESTAMPDIFF對日期差值的計算方式剛好是相反的。
另外,如果是在xml檔案中對計算的值進行比較的話,有可能會用到<、>、<=、>=等,xml會報錯,這裡需要對這些符號進行替換。
原符號 | < | <= | > | >= | & | ' | " |
替換符號 | < | <= | > | >= | & | ' | " |