Ich dachte, das könnte nützlich sein:
Es gibt drei Stellen, an denen die Zeitzone in MySQL festgelegt 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 eingestellt sind:
SELECT @@global.time_zone;
Verwenden Sie einen der folgenden Werte, um einen Wert festzulegen:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';
(Die Verwendung benannter Zeitzonen wie "Europa / Helsinki" bedeutet, dass eine Zeitzonentabelle ordnungsgemäß ausgefüllt sein muss.)
Denken Sie daran, dass dies +02:00
ein Versatz ist. Europe/Berlin
ist eine Zeitzone (mit zwei Offsets) und CEST
eine Uhrzeit, die einem bestimmten Offset entspricht.
@@ session.time_zone Variable
SELECT @@session.time_zone;
Um es einzustellen, verwenden Sie eine der folgenden Optionen:
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 einrichten, die ausgefüllt werden müssen: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Ich erwähne auch, wie diese Tabellen in dieser Antwort ausgefüllt werden .
Um den aktuellen Zeitzonenversatz als zu erhalten TIME
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
Es wird 02:00:00 zurückgegeben, wenn Ihre Zeitzone +2: 00 ist.
So rufen Sie den aktuellen UNIX-Zeitstempel ab:
SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());
So rufen Sie die Zeitstempelspalte als UNIX-Zeitstempel ab
SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
So rufen Sie eine UTC-Datums- / Uhrzeitspalte als UNIX-Zeitstempel ab
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
Hinweis: Durch Ändern der Zeitzone wird die gespeicherte Datums- oder Zeitstempel nicht geändert , es wird jedoch eine andere Datums- / Uhrzeitangabe für vorhandene Zeitstempelspalten angezeigt, da diese intern als UTC-Zeitstempel gespeichert und in der aktuellen MySQL-Zeitzone extern angezeigt werden.
Ich habe hier ein Cheatsheet erstellt: Sollte die Zeitzone von MySQL auf UTC eingestellt sein?
ntp
- und sehen Sie, was für Sie richtig ist!"