Мислех, че това може да е полезно:
Има три места, където часовата зона може да бъде зададена в 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.
Направих cheatsheet тук:Трябва ли часова зона на MySQL да бъде зададена на UTC?