MySQLTIME
以
'hh:mm:ss'
格式(或
'hhh:mm:ss'
大小时值的格式)检索和显示值。TIME
值的范围可能从
'-838:59:59'
到
'838:59:59'
。小时部分可能很大,因为该TIME
类型不仅可以用来表示一天中的时间(必须小于 24 小时),还可以用来表示经过的时间或两个事件之间的时间间隔(可能远大于 24 小时)小时,甚至为负数)。
MySQL 可以识别TIME
多种格式的值,其中一些可以包含精度高达微秒(6 位)的尾随小数秒部分。请参阅
第 9.1.3 节,“日期和时间文字”。有关 MySQL 中小数秒支持的信息,请参阅
第 11.2.7 节,“时间值中的小数秒”。特别是,插入到
TIME
列中的值中的任何小数部分都会被存储而不是被丢弃。加上小数部分,
TIME
值的范围是
'-838:59:59.000000'
到
'838:59:59.000000'
。
将缩写值分配给列时要小心
TIME
。MySQL 将
TIME
带有冒号的缩写值解释为一天中的时间。也就是说,'11:12'
意味着
'11:12:00'
,而不是
'00:11:12'
。MySQL 使用最右边的两个数字代表秒(即经过的时间而不是一天中的时间)的假设来解释没有冒号的缩写值。例如,您可能认为
'1112'
and1112
的意思是
'11:12:00'
(11 点后 12 分钟),但 MySQL 将它们解释为'00:11:12'
(11 分 12 秒)。同样,'12'
和
12
被解释为
'00:00:12'
。
时间部分和小数秒部分之间唯一可识别的分隔符是小数点。
默认情况下,位于TIME
范围之外但在其他方面有效的值将被裁剪到范围的最近端点。例如,
'-850:00:00'
and
'850:00:00'
被转换为
'-838:59:59'
and
'838:59:59'
。无效TIME
值将转换为'00:00:00'
. 请注意,因为'00:00:00'
本身是一个有效值
TIME
,所以无法根据'00:00:00'
存储在表中的值来判断原始值是指定为
'00:00:00'
还是无效。
为了更严格地处理无效
TIME
值,请启用严格的 SQL 模式以导致错误发生。请参阅第 5.1.10 节,“服务器 SQL 模式”。