# 11.2.3 时间类型

MySQL 检索并显示时间中的值*'hh:mm:ss'格式(或'hhh:mm:ss'*大小时值的格式)。时间值的范围可以从'-838:59:59''838:59:59'.小时部分可能很大,因为时间type 不仅可以用来表示一天中的某个时间(必须小于 24 小时),还可以用来表示经过的时间或两个事件之间的时间间隔(可能远大于 24 小时,甚至是负数)。

MySQL 识别时间几种格式的值,其中一些可以包括以微秒(6 位)精度为单位的尾随小数秒部分。看第 9.1.3 节,“日期和时间文字”.有关 MySQL 中小数秒支持的信息,请参阅第 11.2.6 节,“时间值中的小数秒”.特别是,插入到时间列被存储而不是被丢弃。包括小数部分,范围为时间值是'-838:59:59.000000''838:59:59.000000'.

为 a 分配缩写值时要小心时间柱子。MySQL解释缩写时间带有冒号的值作为一天中的时间。那是,'11:12'方法'11:12:00', 不是'00:11:12'.MySQL 使用最右边的两个数字表示秒(即,作为经过时间而不是一天中的时间)的假设来解释不带冒号的缩写值。例如,你可能会想到'1112'1112作为意义'11:12:00'(11 点后 12 分钟),但 MySQL 将它们解释为'00:11:12'(11 分 12 秒)。相似地,'12'12被解释为'00:00:12'.

在时间部分和小数秒部分之间识别的唯一分隔符是小数点。

默认情况下,位于时间范围但在其他方面有效的被剪裁到范围的最近端点。例如,'-850:00:00''850:00:00'被转换为'-838:59:59''838:59:59'.无效的时间值被转换为'00:00:00'.请注意,因为'00:00:00'本身就是一个有效的时间价值,没有办法告诉,从价值'00:00:00'存储在表中,是否将原始值指定为'00:00:00'或者它是否无效。

对无效的更严格的治疗时间值,启用严格的 SQL 模式以导致错误发生。看第 5.1.11 节,“服务器 SQL 模式”.