Я подумал, что это может быть полезно:
Есть три места, где часовой пояс может быть установлен в MySQL:
В файле "my.cnf" в разделе [mysqld]
default-time-zone='+00:00'
@@ global.time_zone переменная
Чтобы увидеть, какое значение они имеют:
SELECT @@global.time_zone;
Чтобы установить для него значение, используйте один из них:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(Использование именованных часовых поясов, таких как «Европа / Хельсинки», означает, что вам необходимо правильно заполнить таблицу часовых поясов.)
Имейте в виду, что +02:00
это смещение. Europe/Berlin
является CEST
часовым поясом (который имеет два смещения) и является часовым временем, которое соответствует определенному смещению.
переменная @@ session.time_zone
SELECT @@session.time_zone;
Чтобы установить его, используйте любой из них:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Оба могут возвращать SYSTEM, что означает, что они используют часовой пояс, установленный в my.cnf.
Чтобы имена часовых поясов работали, необходимо настроить таблицы с информацией о часовых поясах: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Я также упоминаю, как заполнить эти таблицы в этом ответе .
Чтобы получить текущее смещение часового пояса как TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Он вернется 02:00:00, если ваш часовой пояс +2: 00.
Чтобы получить текущую метку времени UNIX:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Чтобы получить столбец отметки времени как отметку времени UNIX
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Чтобы получить столбец даты и времени UTC в качестве метки времени UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Примечание. Изменение часового пояса не приведет к изменению сохраненной даты и времени. , но будет отображать другое время-дату для существующих столбцов временной метки, поскольку они внутренне сохраняются как метки времени UTC и внешне отображаются в текущем часовом поясе MySQL.
Я сделал здесь шпаргалку: должен ли MySQL иметь часовой пояс с UTC?
ntp
- и посмотрите, что подходит именно вам!»