MySQL HOUR函数


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

描述

MySQL HOUR函数返回日期值的小时部分。

语法

MySQL中HOUR函数的语法为:

1
HOUR( date_value )

date_value从中提取小时的时间或日期时间值。

说明

  • HOUR函数返回给定日期值的小时(0到838之间的数字)。
  • 由于时间值的范围可以从-838:59:59'到'838:59:59',因此HOUR函数最多可以返回838(即:大于23)。

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

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

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

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

1
2
3
4
/* Limits for the TIME data type */
#define TIME_MAX_HOUR 838
#define TIME_MAX_MINUTE 59
#define TIME_MAX_SECOND 59

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> SELECT HOUR('2014-01-28 10:13:05');
Result: 10
mysql> SELECT HOUR('2014-01-28 19:21:05');
Result: 19
mysql> SELECT HOUR('12:13:06');
Result: 12
mysql> SELECT HOUR('838:59:59');
Result: 838
mysql> SELECT HOUR('839:00:00');
Result: 838
mysql> SELECT HOUR(CURTIME());
Result: 23


原文链接:https://codingdict.com/