Myslel jsem, že by to mohlo být užitečné:
Existují tři místa, kde lze v MySQL nastavit časové pásmo:
V souboru "my.cnf" v sekci [mysqld]
default-time-zone='+00:00'
@@global.time_zone variable
Chcete-li zjistit, na jakou hodnotu jsou nastaveny:
SELECT @@global.time_zone;
Chcete-li pro něj nastavit hodnotu, použijte jednu z následujících možností:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(Použití pojmenovaných časových pásem jako 'Evropa/Helsinki' znamená, že musíte mít správně vyplněnou tabulku časových pásem.)
Mějte na paměti, že +02:00
je offset. Europe/Berlin
je časové pásmo (které má dva posuny) a CEST
je čas hodin, který odpovídá určitému posunu.
proměnná @session.time_zone
SELECT @@session.time_zone;
Chcete-li jej nastavit, použijte jednu z následujících možností:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Oba mohou vrátit SYSTEM, což znamená, že používají časové pásmo nastavené v my.cnf.
Aby názvy časových pásem fungovaly, musíte nastavit, aby byly informační tabulky časových pásem naplněny:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . V této odpovědi také uvádím, jak tyto tabulky naplnit .
Chcete-li získat posun aktuálního časového pásma jako TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Pokud je vaše časové pásmo +2:00, vrátí se 02:00:00.
Jak získat aktuální časové razítko UNIX:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
Chcete-li získat sloupec časového razítka jako časové razítko UNIX
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
Chcete-li získat sloupec data a času UTC jako časové razítko UNIX
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Poznámka:Změna časového pásma nezmění uložené datum a čas ani časové razítko , ale u stávajících sloupců časových razítek zobrazí jiné datum a čas, protože jsou interně uloženy jako časová razítka UTC a externě zobrazeny v aktuálním časovém pásmu MySQL.
Vytvořil jsem cheatsheet zde:Mělo by mít MySQL časové pásmo nastavené na UTC?