MysqL求时间差的方法:1、使用TIMEDIFF()函数,语法“TIMEDIFF(dt1, dt2);”;2、使用IMESTAMPDIFF()函数,语法“TIMESTAMPDIFF(unit,begin,end);”。
本教程 *** 作环境:windows7系统、MysqL8版本、Dell G3电脑。
MysqL求时间差
timediff()函数 - 计算两个TIME或DATETIME值之间的差值。
timestampdiff()函数 - 计算两个DATE或DATETIME值之间的差值。
MysqL TIMEDIFF函数介绍TIMEDIFF
返回两个TIME
或DATETIME
值之间的差值。 请参阅TIMEDIFF
函数的以下语法。
TIMEDIFF(dt1, dt2);
TIMEDIFF
函数接受两个必须为相同类型的参数,即TIME
或DATETIME
。 TIMEDIFF
函数返回表示为时间值的dt1 - dt2
的结果。
因为TIMEDIFF
函数返回TIME
值,所以其结果被限制在从-838:59:59
到838:59:59
的TIME
值范围内。
MysqL TIMEDIFF函数示例
让我们举一个例子来计算两个时间值之间的差异。
MysqL> SELECT TIMEDIFF('12:00:00','10:00:00') diff;+----------+| diff |+----------+| 02:00:00 |+----------+1 row in set
在这个例子中,我们计算了12:00:00
和10:00:00
之间的差值为:02:00:00
。
以下示例计算两个DATETIME
值之间的差异值:
MysqL> SELECT TIMEDIFF('2010-01-01 01:00:00', '2010-01-02 01:00:00') diff;+-----------+| diff |+-----------+| -24:00:00 |+-----------+1 row in set
如果任一参数为NulL
,TIMEDIFF
函数将返回NulL
。
MysqL> SELECT TIMEDIFF('2010-01-01',NulL) diff;+------+| diff |+------+| NulL |+------+1 row in set, 1 warning (0.00 sec)
如果传递两个不同类型的参数,一个是DATETIME
,另一个是TIME
,TIMEDIFF
函数也返回NulL
。
MysqL> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff;+------+| diff |+------+| NulL |+------+1 row in setMysqL TIMESTAMPDIFF函数简介
下面说明了TIMESTAMPDIFF
函数的语法。
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函数示例
以下示例将以月份值的形式返回2018-01-01
和2018-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') ageFROM 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
在此语句中,我们计算到2018-01-01
日为止的年龄。如果要计算当前年龄,可以通过Now
函数替换字面值'2018-01-01'
,如下所示:
SELECT ID, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, Now()) ageFROM persons;
执行上面查询语句,得到以下结果 -
+----+---------------+---------------+-----+| 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
【相关推荐:mysql视频教程】 总结
以上是内存溢出为你收集整理的mysql怎么求时间差全部内容,希望文章能够帮你解决mysql怎么求时间差所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)