對mysql中日期範圍搜索的大體有三種方式:mysql
一、between and語句; 二、datediff函數; 三、timestampdiff函數;
下面就具體說明下這三種方式:sql
第一種: 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對邊界還須要進行額外的處理。spa
第二種: datediff()函數
datediff函數返回兩個日期之間的天數code
語法:DATEDIFF(date1,date2) SELECT DATEDIFF('2018-07-01','2018-07-04'); 運行結果:-3
因此,datediff函數對時間差值的計算方式爲date1-date2的差值。orm
第三種: timestampdiff()函數
timestampdiff函很多天期或日期時間表達式之間的整數差。it
語法:TIMESTAMPDIFF(interval,datetime1,datetime2),比較的單位interval能夠爲如下數值
FRAC_SECOND。表示間隔是毫秒 SECOND。秒 MINUTE。分鐘 HOUR。小時 DAY。天 WEEK。星期 MONTH。月 QUARTER。季度 YEAR。年
示例:form
select TIMESTAMPDIFF(DAY,'2018-07-01 09:00:00','2018-07-04 12:00:00'); 運行結果:3
因此,timestampdiff函數對日期差值的計算方式爲datetime2-datetime1的差值。class
請注意:DATEDIFF,TIMESTAMPDIFF對日期差值的計算方式恰好是相反的。date
DATE_FORMAT() 函數用於以不一樣的格式顯示日期/時間數據。
語法:
DATE_FORMAT(date,format)
date參數是合法的日期。format規定日期/時間的輸出格式。
示例:
下面的腳本使用 DATE_FORMAT() 函數來顯示不一樣的格式。咱們使用 NOW() 來得到當前的日期/時間:
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') DATE_FORMAT(NOW(),'%m-%d-%Y') DATE_FORMAT(NOW(),'%d %b %y') DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
運行結果
Dec 29 2008 11:45 PM 12-29-2008 29 Dec 08 29 Dec 2008 16:25:46.635