Pomyślałem, że to może być przydatne:
Istnieją trzy miejsca, w których strefa czasowa może być ustawiona w MySQL:
W pliku „my.cnf” w sekcji [mysqld]
default-time-zone='+00:00'
@@global.time_zone zmienna
Aby zobaczyć, na jaką wartość są ustawione:
SELECT @@global.time_zone;
Aby ustawić jej wartość, użyj jednej z nich:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(Użycie nazwanych stref czasowych, takich jak „Europa/Helsinki”, oznacza, że musisz mieć poprawnie wypełnioną tabelę stref czasowych).
Pamiętaj, że +02:00
jest offsetem. Europe/Berlin
to strefa czasowa (która ma dwa przesunięcia) i CEST
to czas zegarowy, który odpowiada określonemu przesunięciu.
Zmienna @@session.time_zone
SELECT @@session.time_zone;
Aby to ustawić, użyj jednego:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Oba mogą zwrócić SYSTEM, co oznacza, że używają strefy czasowej ustawionej w my.cnf.
Aby nazwy stref czasowych działały, musisz skonfigurować tabele informacji o strefach czasowych, które muszą być wypełnione:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Wspominam również o tym, jak wypełnić te tabele w tej odpowiedzi .
Aby uzyskać aktualne przesunięcie strefy czasowej jako TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Zwróci 02:00:00, jeśli twoja strefa czasowa to +2:00.
Aby uzyskać aktualny znacznik czasu UNIX:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Aby uzyskać kolumnę sygnatury czasowej jako sygnaturę czasową UNIX
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Aby uzyskać kolumnę daty i godziny UTC jako znacznik czasu UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Uwaga:zmiana strefy czasowej nie zmieni zapisanej daty i godziny, ani znacznika czasu , ale pokaże inną datę i godzinę dla istniejących kolumn sygnatur czasowych, ponieważ są one wewnętrznie przechowywane jako sygnatury czasowe UTC i zewnętrznie wyświetlane w bieżącej strefie czasowej MySQL.
Tutaj zrobiłem ściągawkę:Czy MySQL powinien mieć swoją strefę czasową ustawioną na UTC?