Mysql中TIMESTAMPDIFF函数的语法与练习案例

作者:山茶花开时。 时间:2024-01-28 18:43:44 

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表 

Mysql中TIMESTAMPDIFF函数的语法与练习案例

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

解题思路

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

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

结果展示:

Mysql中TIMESTAMPDIFF函数的语法与练习案例

总结 

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

标签:mysql,timestampdiff,函数
0
投稿

猜你喜欢

  • Python 数据处理库 pandas进阶教程

    2022-04-18 01:17:13
  • vuejs事件中心管理组件间的通信详解

    2024-05-22 10:44:27
  • 解决selenium模块利用performance获取network日志请求报错的问题(亲测有效)

    2022-12-22 11:09:26
  • golang基于websocket实现的简易聊天室程序

    2023-06-15 00:27:01
  • 浅析Python pandas模块输出每行中间省略号问题

    2022-03-27 21:26:03
  • mysql 之通过配置文件链接数据库

    2024-01-17 13:32:28
  • python批量修改文件后缀示例代码分享

    2021-11-19 13:45:09
  • python更新列表的方法

    2021-12-21 11:38:39
  • Vue-Access-Control 前端用户权限控制解决方案

    2024-06-07 16:02:57
  • 一个JSP页面导致的tomcat内存溢出的解决方法

    2023-06-30 04:14:41
  • Python的argparse库使用详解

    2023-06-13 11:27:36
  • Python自动化测试利器selenium详解

    2021-06-07 20:22:10
  • 再谈 Web 默认字体

    2009-11-24 12:48:00
  • Python递归及尾递归优化操作实例分析

    2022-06-17 16:09:10
  • pygame实现俄罗斯方块游戏

    2023-04-06 20:17:14
  • 解决pytorch中的kl divergence计算问题

    2023-11-12 11:02:00
  • 简单谈谈Python中的模块导入

    2021-02-24 20:28:17
  • python 时间戳与格式化时间的转化实现代码

    2021-07-06 10:14:47
  • 人工神经网络算法知识点总结

    2023-05-16 11:36:06
  • 基于SQL Server OS的任务调度机制详解

    2024-01-14 22:17:59
  • asp之家 网络编程 m.aspxhome.com