MySQL TIMESTAMPDIFF函数简介「建议收藏」

MySQL TIMESTAMPDIFF函数简介「建议收藏」MySQLTIMESTAMPDIFF函数简介TIMESTAMPDIFF(unit,begin,end);TIMESTAMPDIFF函数返回begin-end的结果,其中begin和end是DATE或DATETIME表达式。TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end可以是DATETIME值。如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”的DATETIME值。unit参数是确定(end-begin)的结果

大家好,又见面了,我是你们的朋友全栈君。

MySQL TIMESTAMPDIFF函数简介

TIMESTAMPDIFF(unit,begin,end); 

TIMESTAMPDIFF函数返回begin-end的结果,其中beginendDATEDATETIME表达式。

TIMESTAMPDIFF函数允许其参数具有混合类型,例如,beginDATE值,end可以是DATETIME值。 如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”DATETIME值。

unit参数是确定(end-begin)的结果的单位,表示为整数。 以下是有效单位:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

MySQL TIMESTAMPDIFF函数示例

以下示例将以月份值的形式返回2018-01-012018-06-01的差值:

mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result;
+--------+
| result |
+--------+
|      5 |
+--------+
1 row in set


如果您希望看到差值,只需要将unit参数从MONTH更改为DAY,如下所示:

mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result;
+--------+
| result |
+--------+
|    151 |
+--------+
1 row in set

以下语句返回两个DATETIME值(以分钟为单位)的差异值:

mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result;
+--------+
| result |
+--------+
|     45 |
+--------+
1 row in set

请注意,TIMESTAMPDIFF仅考虑与unit参数相关的时间部分。 请参阅以下示例:

mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result;
+--------+
| result |
+--------+
|     45 |
+--------+
1 row in set


差值应该是45分59秒。 但是,我们将unit参数传递为MINUTE,因此,函数按预期返回45分钟。

如果使用SECOND而不是MINUTE,则TIMESTAMPDIFF函数将考虑SECOND部分,如以下示例所示:

mysql> SELECT TIMESTAMPDIFF(SECOND, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result;
+--------+
| result |
+--------+
|   2759 |
+--------+
1 row in set

# 注:45分59秒= 45×60 + 59(秒)= 2759秒


使用MySQL TIMESTAMPDIFF函数计算年龄

首先,我们创建一个名为persons的新表,用于演示。

USE testdb;
CREATE TABLE persons (
    id INT AUTO_INCREMENT PRIMARY KEY,
    full_name VARCHAR(255) NOT NULL,
    date_of_birth DATE NOT NULL
);


其次,向persons表中插入一些行:

INSERT INTO persons(full_name, date_of_birth)
VALUES('John Doe', '1990-01-01'),
      ('David Taylor', '1989-06-06'),
      ('Peter Drucker', '1985-03-02'),
      ('Lily Minsu', '1992-05-05'),
      ('Mary William', '1995-12-01');

第三步,使用TIMESTAMPDIFF来计算persons表中每个人的年龄:

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        '2018-01-01') age
FROM
    persons;

执行上面查询语句,得到以下结果 –

+----+---------------+---------------+-----+
| id | full_name     | date_of_birth | age |
+----+---------------+---------------+-----+
|  1 | John Doe      | 1990-01-01    |  28 |
|  2 | David Taylor  | 1989-06-06    |  28 |
|  3 | Peter Drucker | 1985-03-02    |  32 |
|  4 | Lily Minsu    | 1992-05-05    |  25 |
|  5 | Mary William  | 1995-12-01    |  22 |
+----+---------------+---------------+-----+
5 rows in set
SQL

在此语句中,我们计算到2018-01-01日为止的年龄。如果要计算当前年龄,可以通过NOW函数替换字面值'2018-01-01',如下所示:

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        NOW()) age
FROM
    persons;
SQL

执行上面查询语句,得到以下结果 –

+----+---------------+---------------+-----+
| id | full_name     | date_of_birth | age |
+----+---------------+---------------+-----+
|  1 | John Doe      | 1990-01-01    |  27 |
|  2 | David Taylor  | 1989-06-06    |  28 |
|  3 | Peter Drucker | 1985-03-02    |  32 |
|  4 | Lily Minsu    | 1992-05-05    |  25 |
|  5 | Mary William  | 1995-12-01    |  21 |
+----+---------------+---------------+-----+
5 rows in set
SQL

在写这篇文章时,当前日期是:2017-08-10

在本教程中,您学习了如何使用MySQL TIMESTAMPDIFF函数来计算两个DATEDATETIME值之间的差值。

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/mysql/timestampdiff.html

文章时,当前日期是:2017-08-10

在本教程中,您学习了如何使用MySQL TIMESTAMPDIFF函数来计算两个DATEDATETIME值之间的差值。

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/mysql/timestampdiff.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135172.html原文链接:https://javaforall.net

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


相关推荐

  • 【7】进大厂必须掌握的面试题-Java面试-Jsp

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 1. jsp的生命周期方法是什么? 方法 描述 公共无效的jspInit() 与servlet的init方法相同,仅…

    2021年6月23日
    99
  • 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」

    微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈导语:微信分享在手机右上角的三个点一键分享就ok了,那么对于分享到朋友圈,分享给朋友是怎么实现的呢?对于那种活动分享送流量是怎么定位分享者的呢?而想要将文章发送给朋友又是怎么获取到的朋友列表的呢?微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。JSSDK使用步骤1、绑定域

    2022年5月13日
    37
  • Navicat激活码在线生成(破解版激活)

    Navicat激活码在线生成(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    74
  • Java实现数组反转

    Java实现数组反转Java实现数组反转实现思路:(1)初始化数组(2)定义方法实现反转数组(3)定义方法遍历数组(4)调用方法//数组反转publicclassArrayReverse{publicstaticvoidmain(String[]args){int[]arr={68,27,95,88,171,996,51,210};//数组例子,自行设置reverse(arr);printArray(arr);}

    2022年4月29日
    45
  • smo算法C语言,SMO算法详解[通俗易懂]

    smo算法C语言,SMO算法详解[通俗易懂]一、我们先回顾下SVM问题。A、线性可分问题1、SVM基本原理:SVM使用一种非线性映射,把原训练数据映射到较高的维。在新的维上,搜索最佳分离超平面,两个类的数据总可以被超平面分开。2、问题的提出:3、如何选取最优的划分直线f(x)呢?4、求解:凸二次规划建立拉格朗日函数:求偏导数:B、线性不可分问题1、核函数如下图:横轴上端点a和b之间红色部分里的所有点定为正类,两边的黑色部分里的点定为负类…

    2022年6月15日
    25
  • Java中 3*0.1 == 0.3 返回值 false ,1*0.3 == 0.3 返回值 true

    Java中 3*0.1 == 0.3 返回值 false ,1*0.3 == 0.3 返回值 trueJava中 3*0.1 == 0.3 返回值 false ,1*0.3 == 0.3 返回值 true

    2022年4月23日
    39

发表回复

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

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