MySQL retrieves and displays TIME
values in 'hh:mm:ss'
format (or 'hhh:mm:ss'
format for large hours values). TIME
values may range from '-838:59:59'
to '838:59:59'
. The hours part may be so large because the TIME
type can be used not only to represent a time of day (which must be less than 24 hours), but also elapsed time or a time interval between two events (which may be much greater than 24 hours, or even negative).
MySQL recognizes TIME
values in several formats, some of which can include a trailing fractional seconds part in up to microseconds (6 digits) precision. See Section 11.1.3, “Date and Time Literals”. For information about fractional seconds support in MySQL, see Section 13.2.6, “Fractional Seconds in Time Values”. In particular, any fractional part in a value inserted into a TIME
column is stored rather than discarded. With the fractional part included, the range for TIME
values is '-838:59:59.000000'
to '838:59:59.000000'
.
Be careful about assigning abbreviated values to a TIME
column. MySQL interprets abbreviated TIME
values with colons as time of the day. That is, '11:12'
means '11:12:00'
, not '00:11:12'
. MySQL interprets abbreviated values without colons using the assumption that the two rightmost digits represent seconds (that is, as elapsed time rather than as time of day). For example, you might think of '1112'
and 1112
as meaning '11:12:00'
(12 minutes after 11 o'clock), but MySQL interprets them as '00:11:12'
(11 minutes, 12 seconds). Similarly, '12'
and 12
are interpreted as '00:00:12'
.
The only delimiter recognized between a time part and a fractional seconds part is the decimal point.
By default, values that lie outside the TIME
range but are otherwise valid are clipped to the closest endpoint of the range. For example, '-850:00:00'
and '850:00:00'
are converted to '-838:59:59'
and '838:59:59'
. Invalid TIME
values are converted to '00:00:00'
. Note that because '00:00:00'
is itself a valid TIME
value, there is no way to tell, from a value of '00:00:00'
stored in a table, whether the original value was specified as '00:00:00'
or whether it was invalid.
For more restrictive treatment of invalid TIME
values, enable strict SQL mode to cause errors to occur. See Section 7.1.11, “Server SQL Modes”.