[Mysql] TIMESTAMPDIFF函数

[Mysql] TIMESTAMPDIFF函数本文主要讲解 TIMESTAMPDIF 函数

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”

-- 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://javaforall.net/232273.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagrip2021.7.15 最新激活码(注册激活)

    (datagrip2021.7.15 最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

    2022年3月21日
    764
  • 超详细pycharm安装教程

    超详细pycharm安装教程超详细pycharm安装教程第一步:双击运行pycharm安装程序更改安装路径第二步:全都不用勾选第三步:点击install第四步:出现如下界面表示正在安装第五步:勾选RunPycharm然后点击Finish第六步:第七步:点击右下角Next…第八步:点击右下角StartUsingPyCharm第九步:点击Evaluate试用第十步:点击Evaluate第十一步:点击+(加号)CreateNewProject第十二步:点击location

    2022年8月25日
    9
  • Lucene 3.0.0 的TokenStream与Analyzer

    Lucene 3.0.0 的TokenStream与Analyzer如果你看的Lucene相关的书是很老版本的,比如说2.4或者更早,那么对于这个版本中的Analyzer可能就不那么容易接受了,我也是看的<lucene分析与应用>这本书,比较古老的版本.今天读了一下源代码,大概说说心得,我从SimpleAnalyzer说起.SimpleAnalyzer的作用就是把一段字符串中除了符号和非文字的内容作为分…

    2022年7月22日
    12
  • c++ system()和WinExec()的区别[通俗易懂]

    c++ system()和WinExec()的区别[通俗易懂]区别1.system是c库的函数WinExec是windows函数区别2.system有一个参数,是命令行Winexec有两个参数,一个是命令行,一个是窗口显示区别3.虽然两个都是命令行,但有很大的区别Winexec的命令行参数一般是一个外部程序的路径加给这个程序的参数,如Winexec("D:\\notepad.exe1.txt",WM_SHOWWINDOW);system的命令行参数其实是给…

    2022年7月11日
    23
  • django不使用外键连接表_创建表时为什么设不了外键

    django不使用外键连接表_创建表时为什么设不了外键外键删除操作如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下:CASCADE:级联操作。如果外键对应的那条数据被删除了,

    2022年7月29日
    10
  • 精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?[通俗易懂]

    精雕软件怎么把图片转成灰度图_bmp灰度图怎么转精雕浮雕图和做刀路?[通俗易懂]1、文件–输入–点阵图像(选择灰度图,bmp格式的)2、绘制–绘制出一个你需要做的图案的形状,注意计算比例尺3、用你绘制的图形来截取灰度图,截取你要的图案部分,截取的部分就是你要做出来的路径部分,如果要用到好几张图的元素的话你就多导入几张图,然后拼接图案。做的过程中可以切换显示模式来看看渲染的效果。4、艺术曲面–图像纹理–位图转网格–图形聚中5、刀具路径–路径向导–根据你的各种不同…

    2022年6月20日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号