Ich dachte, das könnte nützlich sein:
Es gibt drei Stellen, an denen die Zeitzone in MySQL eingestellt werden kann:
In der Datei "my.cnf" im Abschnitt [mysqld]
default-time-zone='+00:00'
@@global.time_zone-Variable
Um zu sehen, auf welchen Wert sie gesetzt sind:
SELECT @@global.time_zone;
Um einen Wert dafür festzulegen, verwenden Sie entweder:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(Die Verwendung von benannten Zeitzonen wie „Europa/Helsinki“ bedeutet, dass Sie eine Zeitzonentabelle richtig ausgefüllt haben müssen.)
Denken Sie daran, dass +02:00
ist ein Versatz. Europe/Berlin
ist eine Zeitzone (die zwei Offsets hat) und CEST
ist eine Uhrzeit, die einem bestimmten Offset entspricht.
@@session.time_zone-Variable
SELECT @@session.time_zone;
Um es einzustellen, verwenden Sie entweder:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
Beide geben möglicherweise SYSTEM zurück, was bedeutet, dass sie die in my.cnf festgelegte Zeitzone verwenden.
Damit Zeitzonennamen funktionieren, müssen Sie Ihre Zeitzoneninformationstabellen auffüllen:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Ich erwähne auch, wie diese Tabellen in dieser Antwort gefüllt werden .
Um den aktuellen Zeitzonenoffset als TIME
zu erhalten
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Es wird 02:00:00 zurückgegeben, wenn Ihre Zeitzone +2:00 ist.
So erhalten Sie den aktuellen UNIX-Zeitstempel:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
So erhalten Sie die Zeitstempelspalte als UNIX-Zeitstempel
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
So erhalten Sie eine UTC-Datetime-Spalte als UNIX-Zeitstempel
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Hinweis:Das Ändern der Zeitzone ändert nicht die gespeicherte Datumszeit oder den Zeitstempel , aber es wird eine andere Datumszeit für vorhandene Zeitstempelspalten angezeigt, da sie intern als UTC-Zeitstempel gespeichert und extern in der aktuellen MySQL-Zeitzone angezeigt werden.
Ich habe hier einen Cheatsheet erstellt:Sollte die Zeitzone von MySQL auf UTC eingestellt sein?