對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會報錯,這里需要對這些符號進行替換。
| 原符號 | < | <= | > | >= | & | ' | " |
| 替換符號 | < | <= | > | >= | & | ' | " |
