MySQL TIMEDIFF函数

时间:2019-02-04 12:52:45  来源:igfitidea点击:

本MySQL教程通过语法和示例说明了如何使用MySQL TIMEDIFF函数。

描述

MySQL TIMEDIFF函数用于返回两个时间值之间的差。

语法

MySQL中TIMEDIFF函数的语法为:

TIMEDIFF( time1, time2 )

time1和time2 用于计算时间差的两个时间/日期时间。

注意
使用TIMEDIFF函数时,time1和time2必须都是时间值,或者都是日期时间值。不能一个时间值,另一个却是日期时间值,否则TIMEDIFF函数将返回NULL。

为什么mysql的时间里小时是838大于24?

这是因为时间类型不仅是代表一天的时间(小于24小时),还有可能是两个时间点(事件)之间相差的时间,所以还可能是负数。

在一开始的mysql版本设计中,在存储时间时 是放在3个字节中的。即不包括符号位最大为:0x7FFFFF
对应的10进制数是8388607。 为了同时方便人们阅读,根据设计,
最大的小时是838,分钟是86,秒是07。 所以最大有效的时间就是 838:59:59。当然有的数并没有被用到,比如8208888。

后面高版本的Mysql为了兼容性,依然硬性规定了小时最大是838:

/* Limits for the TIME data type */
#define TIME_MAX_HOUR 838
#define TIME_MAX_MINUTE 59
#define TIME_MAX_SECOND 59

示例

mysql> SELECT TIMEDIFF('2012-02-17 12:10:08', '2012-02-17 12:10:07');
Result: '00:00:01'

mysql> SELECT TIMEDIFF('12:10:08', '12:10:07');
Result: '00:00:01'

mysql> SELECT TIMEDIFF('11:41:14', '12:10:08');
Result: '-00:28:54'

mysql> SELECT TIMEDIFF('2012-02-17 12:10:08', '2012-02-16 12:10:08');
Result: '24:00:00'

mysql> SELECT TIMEDIFF('2012-02-17 12:10:08', '12:10:08');
Result: NULL