<数据库> datediff、timestampdiff函数的区别

对日期范围搜索的大致有三种方式:

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

返回两个日期之间的天数

SELECT DATEDIFF('2018-07-01','2018-07-04');

运行结果:-3

DATEDIFF(date1,date2)

datediff函数对时间差值的计算方式为date1-date2的差值

其他运行例子:

SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
//结果 1
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
//结果 -1

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的差值

其他运行例子:

select timestampdiff(YEAR,"2018-01-01 15:15:16","2019-08-23 15:15:16") as timestamodiff;
//结果1。相差一年。
select timestampdiff(YEAR,"2019-08-22 15:15:19","2018-12-23 15:15:16") as timestamodiff;
//结果 -1,也是相差一年。
select timestampdiff(YEAR,"2019-08-22 15:15:19","2018-08-22 15:15:16") as timestamodiff; 
//结果0,相差不到一年

select timestampdiff(MONTH,"2018-08-22 15:15:16","2018-07-23 15:15:16") as timestamodiff;
// 结果 0 相差不到一个月
select timestampdiff(MONTH,"2018-08-22 15:15:16","2018-07-01 15:15:16") as timestamodiff;
// 结果 -1 相差一个月
select timestampdiff(MONTH,"2018-08-22 15:15:19","2018-09-23 15:15:16") as timestamodiff; 
// 结果 1 想差一个月

select timestampdiff(DAY,"2018-08-22 15:15:16","2018-08-23 15:15:16") as timestamodiff;
// 结果 1 想差一天
select timestampdiff(DAY,"2018-08-22 15:15:19","2018-08-23 15:15:16") as timestamodiff;
// 结果 0 想差不到一天
select timestampdiff(DAY,"2018-08-23 15:15:19","2018-08-22 15:15:16") as timestamodiff;
// 结果 -1 想差一天

注意:DATEDIFF,TIMESTAMPDIFF对日期差值的计算方式是相反的!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值