MySQL 8.0 Reference Manual Including MySQL NDB Cluster 8.0

MySQL retrieves and displays `TIME`

values in
* 'hh:mm:ss'* format (or

`'hhh:mm:ss'`

`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 9.1.3, “Date and Time Literals”. For information about
fractional seconds support in MySQL, see
Section 11.3.5, “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 5.1.11, “Server SQL Modes”.