The Format for Timestamps in MySQL Logs
MySQL changed the timestamp format in the log files in MySQL 5.7. Since then, I have a few times seen questions about the new format, and how to change the time zone that is used. Latest in a comment to my blog about log_slow_extra
in 8.0.14, where the question was what T and Z in the timestamp (for example 2019-01-31T07:24:06.100447Z
) means. In this blog, I will discuss the timestamp format and show you how you can change the time zone used.
The MySQL 5.7 Change
In MySQL 5.7 it was decided to make two changes to the timestamps affecting the format and time zone:
- The format was changed to use the ISO 8601 / RFC 3339 format:
YYYY-MM-DDThh:mm:ss.uuuuuu
plus a tail value to signify the time zone. - The time zone used for the timestamps defaults to UTC (in 5.6 it defaulted to system time).
So there are two slightly different ways the timestamps can be displayed. The following two examples are for the default where the timestamp is in UTC and one where it is in UTC+11:00 (Australian Eastern Daylight Time):
2019-03-02T02:53:39.781592Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.15) starting as process 1516
2019-03-02T13:54:17.155810+11:00 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.15) starting as process 2812
Changing the Time Zone
How do you change between the UTC and system time zones? You do that using the log_timestamps option which can take one of two values:
- UTC: Use UTC as the time zone. This is the default.
- SYSTEM: Use the same time zone as the operating system.
The option affects both the error log, slow query log, and general query log. The the slow and general query logs, though, it is only the case when logging to a file.
That Do T and Z Mean?
Back to the T and Z in the timestamps – what do they mean? The T is simply used as a separator between the data and time part. Think of it as T for Time. The Z means Zulu – another word for using the UTC time zone. That is:
- T: Separator between the data and time parts.
- Z: Zulu – the UTC time zone.
Thanks for reading.
Any pointer for timestamps in older versions of MySQL server logs? (5.5 and 5.6)
There’s quite a lack of documentation, or it’s poorly indexed for Googling…
In 5.6 and earlier, the format is 190711 18:44:52 (YYmmdd HH:MM:SS) and the time zone is always the system time zone. Hope that helps.