• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

[Mysql] TIMESTAMPDIFF函数

武飞扬头像
山茶花开时。
帮助1

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类型值

示例 

  1.  
    -- 相差:25秒
  2.  
    SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 14:57:00','2022-04-23 14:57:25');
  3.  
    -- 相差:5分钟
  4.  
    SELECT TIMESTAMPDIFF(MINUTE,'2022-04-23 15:00:00','2022-04-23 15:05:00');
  5.  
    -- 相差:5小时
  6.  
    SELECT TIMESTAMPDIFF(HOUR,'2022-04-23 11:20:00', '2022-04-23 16:20:00');
  7.  
    -- 相差:2天
  8.  
    SELECT TIMESTAMPDIFF(DAY,'2022-04-23 11:20:00', '2022-04-25 11:20:00');
  9.  
    -- 相差:1星期
  10.  
    SELECT TIMESTAMPDIFF(WEEK,'2022-04-23 11:20:00', '2022-04-30 11:20:00');
  11.  
    -- 相差:1月
  12.  
    SELECT TIMESTAMPDIFF(MONTH,'2022-04-23 11:20:00', '2022-05-30 11:20:00');
  13.  
    -- 相差:1季度
  14.  
    SELECT TIMESTAMPDIFF(QUARTER,'2022-04-23 11:20:00', '2022-07-23 11:20:00');
  15.  
    -- 相差:1年
  16.  
    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.  
    -- 12
  2.  
    SELECT TIMESTAMPDIFF(HOUR,'2022-04-27','2022-04-27 12:00:00');
  3.  
    -- 12
  4.  
    SELECT TIMESTAMPDIFF(HOUR,'2022-04-27 00:00:00','2022-04-27 12:00:00');

上述两行代码等价,返回的都是相同的结果

TIMESTAMPDIFF函数可以结合日期函数进行搭配使用

  1.  
    -- 可以结合日期函数进行搭配使用
  2.  
    SELECT TIMESTAMPDIFF(SECOND,'2022-04-23', CURRENT_DATE());
  3.  
    SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',NOW());
  4.  
    SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',CURRENT_TIMESTAMP());
  5.  
     
  6.  
    -- 上述日期函数补充说明
  7.  
    -- CURRENT_DATE()用于返回当前时间
  8.  
    -- 示例结果:2022-04-27
  9.  
    SELECT CURRENT_DATE();
  10.  
     
  11.  
    -- NOW()用于返回当前日期和时间
  12.  
    -- 示例结果:2022-04-27 11:27:28
  13.  
    SELECT NOW();
  14.  
     
  15.  
    -- CURRENT_TIMESTAMP()用于返回当前日期和时间
  16.  
    -- 示例结果:2022-04-27 11:30:25
  17.  
    SELECT CURRENT_TIMESTAMP();

练习案例

导入数据

  1.  
    DROP TABLE IF EXISTS Student;
  2.  
    CREATE TABLE Student (
  3.  
    SId VARCHAR (10),
  4.  
    Sname VARCHAR (10),
  5.  
    Sage datetime,
  6.  
    Ssex VARCHAR (10)
  7.  
    )
  8.  
    ENGINE = InnoDB
  9.  
    DEFAULT CHARSET = utf8;
  10.  
    INSERT INTO Student(SId,Sname,Sage,Ssex)
  11.  
    VALUES('01' , '赵雷' , '1990-01-01' , '男')
  12.  
    ,('02' , '钱电' , '1990-12-21' , '男')
  13.  
    ,('03' , '孙风' , '1990-05-20' , '男')
  14.  
    ,('04' , '李云' , '1990-08-06' , '男')
  15.  
    ,('05' , '周梅' , '1991-12-01' , '女')
  16.  
    ,('06' , '吴兰' , '1992-03-01' , '女')
  17.  
    ,('07' , '郑竹' , '1989-07-01' , '女')
  18.  
    ,('08' , '张三' , '2017-12-20' , '女')
  19.  
    ,('09' , '李四' , '2017-12-25' , '女')
  20.  
    ,('11' , '李四' , '2017-12-30' , '女')
  21.  
    ,('12' , '孙七' , '2018-01-01' , '女');

Student表 

学新通

问题:按照出生日期来算学生年龄,其中当前月日<出生年月的月日,则年龄减一

解题思路

使用NOW()、TIMESTAMPDIFF()函数计算年龄

  1.  
    SELECT *, TIMESTAMPDIFF(YEAR,Sage,NOW())AS age
  2.  
    FROM Student;

结果展示:

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggcegh
系列文章
更多 icon
同类精品
更多 icon
继续加载