Mysql FROM_UNIXTIME как UTC
Как я могу получить
FROM_UNIXTIME
как UTC/GMT в mysql? Дата возвращается в часовом поясе соединения.
Я не хочу изменять часовой пояс соединения.
Ответы
Ответ 1
Вам лучше настроить часовую зону раньше времени:
SET time_zone='UTC';
select FROM_UNIXTIME(1277942400);
Причина в том, что конверсии с локальным часовым поясом могут быть потерями. Ниже приведен пример этого в документах (см. Четвертый абзац в разделе UNIX_TIMESTAMP()
, начиная с "Примечание:" )
Ответ 2
Мое решение было
SELECT CONVERT_TZ(FROM_UNIXTIME(1277942400), @@session.time_zone,'UTC')
если CONVERT_TZ возвращает значение null, убедитесь, что таблица часовых поясов mysql заполнена:
zypper install mysql-community-server-tools
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Ответ 3
Я знаю, что это ответ, но все же я хотел бы внести свой вклад:
Если вы не хотите, чтобы ваш сервер производил время часовой пояс UTC с такими функциями, как NOW()
и FROM_UNIXTIME()
и т.д., вам нужно установить time_zone
, как @Matt Johnson.
В этой статье он не упомянул: SET time_zone = timezone;
устанавливает часовой пояс только для текущего соединения.
Используйте SET GLOBAL time_zone = '+00:00'
, если вы хотите, чтобы эти функции возвращали/конвертировали ваши даты в UTC по умолчанию, поэтому вам не нужно было устанавливать часовой пояс каждый раз, когда вы хотите сохранить некоторые даты в формате UTC.
Проверьте текущие настройки time_zone: SELECT @@global.time_zone, @@session.time_zone;
Справочное руководство MySQL:: MySQL 5.5:: 10.6 Поддержка часового пояса сервера MySQL