MySQL'HH:MM:SS'格式检索和显示TIME(或对于大的小时值采用'HHH:MM:SS'格式)TIME值的范围可以从'-838:59:59''838:59:59'。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)

你可以用各种格式指定TIME值:

·         'D HH:MM:SS.fraction'格式的字符串。还可以使用下面任何一种“非严格”语法:'HH:MM:SS.fraction''HH:MM:SS''HH:MM''D HH:MM:SS''D HH:MM''D HH''SS'。这里D表示日,可以取034之间的值。请注意MySQL还不保存分数。

·         'HHMMSS'格式的没有间割符的字符串,假定是有意义的时间。例如,'101112'被理解为'10:11:12',但'109712'是不合法的(它有一个没有意义的分钟部分),将变为'00:00:00'

·         HHMMSS格式的数值,假定是有意义的时间。例如,101112被理解为'10:11:12'。下面格式也可以理解:SSMMSSHHMMSSHHMMSS.fraction。请注意MySQL还不保存分数。

·         函数返回的结果,其值适合TIME上下文,例如CURRENT_TIME

对于指定为包括时间部分间割符的字符串的TIME值,如果时、分或者秒值小于10,则不需要指定两位数。'8:3:2''08:03:02'相同。

TIME列分配简写值时应注意。没有冒号,MySQL解释值时假定最右边的两位表示秒。(MySQL解释TIME值为过去的时间而不是当天的时间)例如,你可能认为'1112'1112表示'11:12:00'(11点过12),但MySQL将它们解释为'00:11:12'(11分,12 )。同样,'12'12 被解释为 '00:00:12'。相反,TIME值中使用冒号则肯定被看作当天的时间。也就是说,'11:12'表示'11:12:00',而不是'00:11:12'

超出TIME范围但合法的值被裁为范围最接近的端点。例如,'-850:00:00''850:00:00'被转换为'-838:59:59''838:59:59'

无效TIME值被转换为'00:00:00'。请注意由于'00:00:00'本身是一个合法TIME值,只从表内保存的一个'00:00:00'值还不能说出原来的值是 '00:00:00'还是不合法的值。