DATEDIFF函数与TIMESTAMPDIFF函数

DATEDIFF函数用于返回两个日期的天数

语法格式:

DATEDIFF(date1,date2)

参数说明:

date1: 比较日期1

date2: 比较日期2

DATEDIFF函数返回date1 - date2的计算结果,date1和date2两个参数需是有效的日期或日期时间值;如果参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算)

SELECT DATEDIFF('2022-04-30','2022-04-29');-- 1

SELECT DATEDIFF('2022-04-30','2022-04-30');-- 0

SELECT DATEDIFF('2022-04-29','2022-04-30');-- -1
 
SELECT DATEDIFF('2022-04-30','2022-04-30 14:00:00');-- 0

SELECT DATEDIFF('2022-04-30 13:00:00','2022-04-29 14:00:00');-- 1

SELECT DATEDIFF('2017-06-25 09:34:21', '2017-06-15');-- 10


TIMESTAMPDIFF函数用于计算两个日期的时间差

基本格式:

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

unit: 日期比较返回的时间差单位

datetime_expr1: 要比较的日期1

datetime_expr2: 要比较的日期2

TIMESTAMPDIFF函数返回datetime_expr2 - datetime_expr1的结果

其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值

unit常用可选值如下:

SECOND:秒

MINUTE:分钟

HOUR:小时

DAY:天

WEEK:星期

MONTH:月

QUARTER:季度

YEAR:年

举例如下:

-- 相差:25秒
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 14:57:00','2022-04-23 14:57:25');

-- 相差:5分钟
SELECT TIMESTAMPDIFF(MINUTE,'2022-04-23 15:00:00','2022-04-23 15:05:00');

-- 相差:5小时
SELECT TIMESTAMPDIFF(HOUR,'2022-04-23 11:20:00', '2022-04-23 16:20:00');

-- 相差:2天
SELECT TIMESTAMPDIFF(DAY,'2022-04-23 11:20:00', '2022-04-25 11:20:00');

-- 相差:1星期
SELECT TIMESTAMPDIFF(WEEK,'2022-04-23 11:20:00', '2022-04-30 11:20:00');

-- 相差:1月
SELECT TIMESTAMPDIFF(MONTH,'2022-04-23 11:20:00', '2022-05-30 11:20:00');

-- 相差:1季度
SELECT TIMESTAMPDIFF(QUARTER,'2022-04-23 11:20:00', '2022-07-23 11:20:00');

-- 相差:1年
SELECT TIMESTAMPDIFF(YEAR,'2022-04-23 11:20:00', '2023-04-23 11:20:00');
TIMESTAMPDIFF函数允许其搭配使用的参数datetime_expr1和datetime_expr2具有混合类型

datetime_expr1是DATE类型值,datetime_expr2是DATETIME类型值,

TIMESTAMPDIFF函数会将datetime_expr1自动转换成DATETIME类型值
(即在日期后面加上时间“00:00:00”) 

-- 12
SELECT TIMESTAMPDIFF(HOUR,'2022-04-27','2022-04-27 12:00:00');

-- 12
SELECT TIMESTAMPDIFF(HOUR,'2022-04-27 00:00:00','2022-04-27 12:00:00');
TIMESTAMPDIFF函数可以结合日期函数进行搭配使用


-- 可以结合日期函数进行搭配使用
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23', CURRENT_DATE());
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',NOW());
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',CURRENT_TIMESTAMP());
 
-- 上述日期函数补充说明
-- CURRENT_DATE()用于返回当前时间
-- 示例结果:2022-11-1
SELECT CURRENT_DATE();
 
-- NOW()用于返回当前日期和时间
-- 示例结果:2022-11-1 11:27:28
SELECT NOW();
 
-- CURRENT_TIMESTAMP()用于返回当前日期和时间
-- 示例结果:2022-11-1 11:30:25
SELECT CURRENT_TIMESTAMP();

两个函数区别

1.DATEDIFF函数仅用于返回两个日期的天数,TIMESTAMPDIFF函数用于返回计算两个日期指定单位的时间差(指定单位可以是年,季度,月,星期,天数,小时,分钟,秒等等)

2.对日期差值的计算方式相反

DATEDIFF函数的语法格式: DATEDIFF(start,end)

DATEDIFF函数返回start - end的计算结果

TIMESTAMPDIFF函数的语法格式: TIMESTAMPDIFF(DAY,start,end)

TIMESTAMPDIFF函数返回end - start的计算结果


-- -2
SELECT DATEDIFF('2022-04-28', '2022-04-30');

-- 2
SELECT TIMESTAMPDIFF(DAY,'2022-04-28', '2022-04-30');


3.如果时间是YYYY-MM-DD HH:MM:SS格式,在计算天数差时,TIMESTAMPDIFF使用的是24小时制,即使是23:59:59,也不算做是一天,而DATEDIFF则是直接截取日期的部分相减。那么此时使用两个函数计算出来的天数是不一样的

-- 2
SELECT DATEDIFF('2022-04-30 00:00:00','2022-04-28 23:59:59');

-- 1
SELECT TIMESTAMPDIFF(DAY,'2022-04-28 23:59:59', '2022-04-30 00:00:00');

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就想找个工作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值