MySQL - разница между CET и CEST - PullRequest
2 голосов
/ 30 марта 2011

Мне нужно переместить некоторые таблицы из базы данных MySQL в PostgreSQL.Итак, я проверил, какой часовой пояс использует сервер MySQL, проверив системную переменную:

system time zone    CET

CET - насколько я знаю - в отличие от CEST - никогда не бывает больше UTC+1.CEST летом UTC+2.Согласно http://en.wikipedia.org/wiki/Central_European_Time

Но SELECT CURRENT_TIMESTAMP() фактически возвращает CEST время (UTC+2):

Почему?

1 Ответ

2 голосов
/ 30 марта 2011

Итак, я проверил, какой часовой пояс Использование сервера MySQL путем проверки системы переменная

Как ты это сделал?

Попробуйте этот запрос, пожалуйста, и скажите мне результаты:

SELECT @@global.time_zone, @@session.time_zone;

Результаты могут быть трех типов.

  • SYSTEM

, что означает, что MySQL использует настройки часового пояса вашей ОС

  • что-то вроде '+01: 00' или что-то еще значение

разница с UTC (Всемирное координированное время)

  • что-то вроде "Европа / Берлин"

, который в основном такой же, как указано выше, но вы заполнили таблицы часовых поясов в MySQL.

Видите ли, datetime значения хранятся в виде значения UTC внутри MySQL. Таким образом, когда вы вставляете «2011-03-30 12:34:56» в таблицу с переменной SYSTEM, установленной в «Европа / Берлин» / «+01: 00», MySQL вычисляет целочисленное представление для «2011-03- 30 11:34:56 ', сохраняет значение в вашей БД. Когда вы запрашиваете значения даты и времени, MySQL снова добавляет этот час (при условии, что ваши настройки часового пояса не изменились) и отображает значение «2011-03-30 12: 34: 56»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...