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