文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

[Mysql] TIMESTAMPDIFF函数

2023-08-31 08:17

关注

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可以是DATEDATETIME类型值

示例 

-- 相差: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”

-- 12SELECT TIMESTAMPDIFF(HOUR,'2022-04-27','2022-04-27 12:00:00');-- 12SELECT 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-27SELECT CURRENT_DATE();-- NOW()用于返回当前日期和时间-- 示例结果:2022-04-27 11:27:28SELECT NOW();-- CURRENT_TIMESTAMP()用于返回当前日期和时间-- 示例结果:2022-04-27 11:30:25SELECT 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 ageFROM Student;

结果展示:

来源地址:https://blog.csdn.net/Hudas/article/details/124351790

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯