Wie setze ich mysql timezone korrekt?

7

Ich habe ein seltsames Problem in Bezug auf die Zeitzone von mysql.

In meiner Website-Konfigurationsdatei habe ich diese Zeile, die die Zeitzone festlegt:

%Vor%

Der lustige Teil ist, dass wenn ich direkt danach eine weitere Zeile hinzufüge:

%Vor%

Nach der Ausführung dieses Codes wird die Uhrzeit korrekt angezeigt.

ABER, in einigen anderen Abfragen füge ich Zeilen in Tabellen ein, die eine Spalte namens date haben, die standardmäßig auf CURRENT_TIMESTAMP steht.

Zeilen werden wie folgt eingefügt:

%Vor%

(Die Sitzungstabelle hat eine date -Spalte, die standardmäßig auf CURRENT_TIMESTAMP gesetzt ist)

Aber der in DB eingefügte Wert verweist immer noch auf die Zeitzone des Servers: ((

Irgendwelche Ideen, wie man das durcharbeitet?

    
Dany Khalife 08.12.2011, 16:13
quelle

1 Antwort

19

Sie müssen verstehen, dass MySQL mehrere Zeitzoneneinstellungen enthält:

  • Systemzeitzone (im Prinzip die in OS eingestellte Zeitzone)
  • Server-Zeitzone (die von MySQL verwendete Zeitzone)
  • Client-Zeitzone (die pro Verbindung verwendete Sitzungszeitzone)

Weitere Informationen finden Sie Ссылка .

Datum / Uhrzeit-Werte werden auf zwei verschiedene Arten gespeichert:

  • Alle auf Unix-Timestamp basierenden Werte werden immer in UTC gespeichert. Sie werden intern von und in die Client-Zeitzone umgewandelt, wenn sie gespeichert und gelesen werden. Dasselbe gilt für die Funktionen NOW () und CURTIME (), da sie timestamp-basiert sind.
  • DATE-, TIME- und DATETIME-Spalten (die ihre Werte in einem Jahr-Monat-Tag-Stunde-Minuten-Sekunde-Format speichern) sind von den Zeitzoneneinstellungen NICHT betroffen und werden niemals konvertiert.

Aus dem Obigen sollte klar werden, dass die Werte, die Sie sehen, wenn Sie aus Unix-Timestamp-basierten Spalten lesen, nicht unbedingt das sind, was wirklich in der DB gespeichert ist. Sie werden mithilfe der Server-Zeitzone und der Client-Zeitzone konvertiert. Das Ergebnis kann verwirrend sein, wenn Sie die Details der Mechanik nicht verstehen.

Versuchen Sie bei einem ersten Test, die aktuellen Einstellungen in jedem Ihrer Client-Programme durch Ausführen von

herauszufinden %Vor%

Die globale Zeitzone wird immer gleich sein. Die Sitzungszeitzone kann jedoch von Clientanwendung zu Clientanwendung abweichen und die Ergebnisse Ihrer Lese- und Schreibvorgänge ändern.

    
Jpsy 08.12.2011, 20:35
quelle

Tags und Links