Поскольку я обнаружил, что этот вопрос не знает, что mysql всегда сохраняет время в полях меток времени в UTC, но будет отображать (например, phpmyadmin) в местном часовом поясе, я хотел бы добавить свои выводы.
У меня есть автоматически обновляемое поле last_modified, определенное как:
`last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Глядя на это с помощью phpmyadmin, он выглядит как по местному времени, внутренне это UTC
SET time_zone = '+04:00'; // or '+00:00' to display dates in UTC or 'UTC' if time zones are installed.
SELECT last_modified, UNIX_TIMESTAMP(last_modified), from_unixtime(UNIX_TIMESTAMP(last_modified), '%Y-%c-%d %H:%i:%s'), CONVERT_TZ(last_modified,@@session.time_zone,'+00:00') as UTC FROM `table_name`
В любом созвездии UNIX_TIMESTAMP и «как UTC» всегда отображаются во времени UTC.
Запустите это дважды, сначала без установки часового пояса.