MySQL TIMEDIFF函数
时间:2019-11-20 08:52:23 来源:igfitidea点击:
简介:本教程向您展示如何使用MySQL TIMEDIFF函数,并向您提供该函数的一些重要用法说明。
MySQL TIMEDIFF函数简介
TIMEDIFF返回两个TIME或DATETIME值之间的差。
请参见以下TIMEDIFF函数的语法。
TIMEDIFF(dt1, dt2);
TIMEDIFF函数接受两个必须为相同类型的参数,即TIME或DATETIME。
TIMEDIFF函数返回以时间值表示的dt1-dt2的结果。
由于TIMEDIFF函数返回TIME值,因此其结果限于TIME值允许的范围-838:59:59至838:59:59。
请务必注意,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 (0.00 sec)
在此示例中,我们计算了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 (0.00 sec)
如果任一参数为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 set (0.00 sec)
MySQL TIMEDIFF函数并截断了错误的时间值
考虑以下示例。
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 (0.00 sec)
所以结果应该是1416小时,但是,正如我们前面提到的,TIMEDIFF函数的结果是TIME值,范围是-838:59:59到838:59:59。
因此,MySQL截断了结果。
若要解决此问题,您需要使用TIMESTAMPDIFF函数,如下所示:
SELECT TIMESTAMPDIFF( HOUR, '2009-01-01 00:00:00', '2009-03-01 00:00:00') diff;
以下内容显示了两个DATETIME值之间的时差:
+------+ | diff | +------+ | 1416 | +------+ 1 row in set (0.00 sec)
在本教程中,您学习了如何使用MySQL TIMEDIFF函数来计算两个TIME或DATETIME值之间的差。