Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wird das Ändern einer MySQL-Zeitzone die Werte von DateTime-Feldern in einer Datenbank ändern?

Im Prinzip sollte es nicht. Es gibt verschiedene Gründe, warum es sich nicht ändern sollte, abhängig von der Art Ihrer Werte:meistens DATETIME und TIMESTAMP.

DATETIME-Werte werden nie konvertiert, daher sind sie unabhängig von der Zeitzone.

TIMESTAMP-Werte werden konvertiert (direktes Zitat aus dem Handbuch hier --- ich nehme an, Sie haben eine ziemlich aktuelle Version von MySQL) "von der aktuellen Zeitzone in UTC zum Speichern und zurück von UTC in die aktuelle Zeitzone zum Abrufen. (This tritt bei anderen Typen wie DATETIME nicht auf.) Standardmäßig ist die aktuelle Zeitzone für jede Verbindung die Zeit des Servers. Die Zeitzone kann für jede Verbindung festgelegt werden. Solange die Zeitzoneneinstellung konstant bleibt, können Sie denselben Wert zurückerhalten, den Sie gespeichert haben. Wenn Sie einen TIMESTAMP-Wert speichern und dann die Zeitzone ändern und den Wert abrufen, unterscheidet sich der abgerufene Wert von dem gespeicherten Wert. Dies liegt daran, dass nicht dieselbe Zeitzone für die Konvertierung verwendet wurde Beide Richtungen." (von http://dev.mysql.com/doc/refman /5.5/en/datetime.html ).

In beiden Fällen ändern sich also die tatsächlich auf dem Server gespeicherten Daten nicht (was so sein sollte), aber die Werte, die Ihre Abfragen zeigen, können vorher und nachher unterschiedlich sein.