对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