网站开发设计开题报告,谷歌推广外贸建站,山西省新增最新消息,陕西省建设网站转载自 MySQL timediff()函数
MySQL TIMEDIFF函数介绍
TIMEDIFF返回两个TIME或DATETIME值之间的差值。 请参阅TIMEDIFF函数的以下语法。
TIMEDIFF(dt1, dt2);TIMEDIFF函数接受两个必须为相同类型的参数#xff0c;即TIME或DATETIME。 TIMEDIFF函数返回表示为时间值的dt1 -…转载自 MySQL timediff()函数
MySQL TIMEDIFF函数介绍
TIMEDIFF返回两个TIME或DATETIME值之间的差值。 请参阅TIMEDIFF函数的以下语法。
TIMEDIFF(dt1, dt2);TIMEDIFF函数接受两个必须为相同类型的参数即TIME或DATETIME。 TIMEDIFF函数返回表示为时间值的dt1 - dt2的结果。
因为TIMEDIFF函数返回TIME值所以其结果被限制在从-838:59:59到838:59:59的TIME值范围内。
请注意TIMEDIFF函数接受TIME或DATETIME类型的值。要比较两个DATE或DATETIME值之间的差异可以使用DATEDIFF函数。
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如果任一参数为NULLTIMEDIFF函数将返回NULL。
mysql SELECT TIMEDIFF(2010-01-01,NULL) diff;
------
| diff |
------
| NULL |
------
1 row in set, 1 warning (0.00 sec)如果传递两个不同类型的参数一个是DATETIME另一个是TIMETIMEDIFF函数也返回NULL。
mysql SELECT TIMEDIFF(2010-01-01 10:00:00,10:00:00) diff;
------
| diff |
------
| NULL |
------
1 row in setMySQL TIMEDIFF函数和截断的不正确的时间值
请考虑以下示例
mysql SELECT TIMEDIFF(2009-03-01 00:00:00, 2009-01-01 00:00:00) diff;
-----------
| diff |
-----------
| 838:59:59 |
-----------
1 row in set, 1 warning (0.00 sec)可以看到有一个警告。下面来看看看使用SHOW WARNINGS语句是什么。
mysql SHOW WARNINGS;
-------------------------------------------------------------
| Level | Code | Message |
-------------------------------------------------------------
| Warning | 1292 | Truncated incorrect time value: 1416:00:00 |
-------------------------------------------------------------
1 row in set所以结果应该是1416小时但是如前所述TIMEDIFF函数的结果是一个TIME值范围是从-838:59:59到838:59:59。 因此MySQL会截断结果。
要解决此问题您需要使用TIMESTAMPDIFF函数如下所示
mysql SELECT TIMESTAMPDIFF(HOUR, 2018-01-01 00:00:00, 2018-03-01 00:00:00) diff;
------
| diff |
------
| 1416 |
------
1 row in set在本教程中您已经学习了如何使用MySQL TIMEDIFF函数来计算两个TIME或DATETIME值之间的差值。