react 前端框架如何驱动企业数字化转型与创新发展
276
2023-12-04
这篇文章主要介绍了mysql如何求时间差,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
mysql求时间差的方法:1、使用TIMEDIFF()函数,语法“TIMEDIFF(dt1, dt2);”;2、使用IMESTAMPDIFF()函数,语法“TIMESTAMPDIFF(unit,begin,end);”。
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
mysql求时间差
timediff()函数 - 计算两个TIME或DATETIME值之间的差值。
timestampdiff()函数 - 计算两个DATE或DATETIME值之间的差值。
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)的结果的单位,表示为整数。 以下是有效单位:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
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 INTAUTO_INCREMENT PRIMARYKEY, 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在此语句中,我们计算到2018-01-01日为止的年龄。如果要计算当前年龄,可以通过NOW函数替换字面值2018-01-01,如下所示:
SELECT id, full_name, date_of_birth,TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) age FROM 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如何求时间差”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~