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 模式”。