Mysql中TIMESTAMPDIFF函数的语法与练习案例
TIMESTAMPDIFF函数用于计算两个日期的时间差
语法结构
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
参数说明
unit: 日期比较返回的时间差单位,常用可选值如下:
SECOND:秒
MINUTE:分钟
HOUR:小时
DAY:天
WEEK:星期
MONTH:月
QUARTER:季度
YEAR:年
datetime_expr1: 要比较的日期1
datetime_expr2: 要比较的日期2
TIMESTAMPDIFF函数返回datetime_expr2 - datetime_expr1的结果,其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值
示例
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 相差: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”)
?
1 2 3 4 -- 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函数可以结合日期函数进行搭配使用
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | -- 可以结合日期函数进行搭配使用 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-04-27 SELECT CURRENT_DATE (); -- NOW()用于返回当前日期和时间 -- 示例结果:2022-04-27 11:27:28 SELECT NOW(); -- CURRENT_TIMESTAMP()用于返回当前日期和时间 -- 示例结果:2022-04-27 11:30:25 SELECT CURRENT_TIMESTAMP (); |
练习案例
导入数据
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | DROP TABLE IF EXISTS Student; CREATE TABLE Student ( SId VARCHAR (10), Sname VARCHAR (10), Sage datetime, Ssex VARCHAR (10) ) ENGINE = InnoDB DEFAULT CHARSET = utf8; INSERT INTO Student(SId,Sname,Sage,Ssex) VALUES ( '01' , '赵雷' , '1990-01-01' , '男' ) ,( '02' , '钱电' , '1990-12-21' , '男' ) ,( '03' , '孙风' , '1990-05-20' , '男' ) ,( '04' , '李云' , '1990-08-06' , '男' ) ,( '05' , '周梅' , '1991-12-01' , '女' ) ,( '06' , '吴兰' , '1992-03-01' , '女' ) ,( '07' , '郑竹' , '1989-07-01' , '女' ) ,( '08' , '张三' , '2017-12-20' , '女' ) ,( '09' , '李四' , '2017-12-25' , '女' ) ,( '11' , '李四' , '2017-12-30' , '女' ) ,( '12' , '孙七' , '2018-01-01' , '女' ); |
Student表
问题:按照出生日期来算学生年龄,其中当前月日<出生年月的月日,则年龄减一
?解题思路
使用NOW()、TIMESTAMPDIFF()函数计算年龄
1 2 | SELECT *, TIMESTAMPDIFF( YEAR ,Sage,NOW()) AS age FROM Student; |
结果展示:
总结
到此这篇关于Mysql中TIMESTAMPDIFF函数的语法与练习案例的文章就介绍到这了,更多相关Mysql中TIMESTAMPDIFF函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/Hudas/article/details/124351790
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。