[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类型值
示例
-
-- 相差: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-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();
练习案例
导入数据
-
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()函数计算年龄
-
SELECT *, TIMESTAMPDIFF(YEAR,Sage,NOW())AS age
-
FROM Student;
结果展示:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggcegh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01