Documentation Home

11.2.3 时间类型

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 节,“时间值中的小数秒”。特别是,从 MySQL 5.6.4 开始,插入到 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 模式”