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

 更新时间:2022年09月18日 10:20:57   作者:山茶花开时。  
在应用时经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD,下面这篇文章主要给大家介绍了关于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;

结果展示:

总结 

到此这篇关于Mysql中TIMESTAMPDIFF函数的语法与练习案例的文章就介绍到这了,更多相关Mysql中TIMESTAMPDIFF函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL笔记之触发器的应用

    MySQL笔记之触发器的应用

    触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句
    2013-05-05
  • JDBC连接MySQL出现的问题

    JDBC连接MySQL出现的问题

    采用JDBC连接MySQL数据库,JDBC驱动已经添加到eclipse的项目构建路径里了,按理来说应该一切正常。运行项目后提示“无法加载驱动”。
    2010-12-12
  • MySQL子查询用法实例分析

    MySQL子查询用法实例分析

    这篇文章主要介绍了MySQL子查询用法,结合实例形式对比分析了MySQL子查询的设置技巧,需要的朋友可以参考下
    2016-04-04
  • mysql定时任务(event事件)实现详解

    mysql定时任务(event事件)实现详解

    这篇文章主要介绍了mysql定时任务(event事件)实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • MySQL事件与触发器专题精炼

    MySQL事件与触发器专题精炼

    触发器是SQLserver提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,事件是在 MySQL 5.1后引入的,有点类似操作系统的计划任务,但是周期性任务是内置在MySQL服务端执行的
    2022-03-03
  • win10下mysql 8.0.11压缩版安装详细教程

    win10下mysql 8.0.11压缩版安装详细教程

    这篇文章主要为大家详细介绍了win10下mysql 8.0.11压缩版安装详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • MySQL存储过程的传参和流程控制示例讲解

    MySQL存储过程的传参和流程控制示例讲解

    这篇文章主要介绍了MySQL存储过程的传参和流程控制示例讲解, repeat和Loop区别是repeat有自己退出循环的语句until,Loop使用的是if判断语句,本文结合示例代码详细讲解,需要的朋友可以参考下
    2023-02-02
  • SQL中row_number() over(partition by)的用法说明

    SQL中row_number() over(partition by)的用法说明

    这篇文章主要介绍了SQL中row_number() over(partition by)的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 一次MySQL慢查询导致的故障

    一次MySQL慢查询导致的故障

    这篇文章主要介绍了如何对MySQL慢查询导致的故障进行处理,慢查询是我们在mysql中经常需要使用到的一个很方便的功能,慢查询对于跟踪有问题的查询很有用,需要的朋友可以参考下
    2015-08-08
  • PHP中常用的几个 mysql操作

    PHP中常用的几个 mysql操作

    本篇文章是对关于php操作mysql执行数据库查询的一些常用操作进行了详细的汇总介绍,非常的细致全面,也很简单,需要的朋友参考下
    2015-04-04

最新评论