Stellen Sie die Zeitzone der MySQL-Datenbank auf GMT ein

7

Ich muss die Zeitzone einer einzelnen Datenbank ändern, ist das möglich?

Ich weiß, wir können die Zeitzone in unserem WHM ändern (wir verwenden einen dedizierten Server von hostgator), aber eine große Anzahl von Legacy-Software, die auf dem Server läuft, hat eine Menge von +6 Stunden Codierung (dh Server-Zeitzone ist) CST, wir wollten die Zeit in GMT, also haben frühere Entwickler Datum / Zeit manuell innerhalb des Codes geändert - schlecht!).

Ich arbeite jetzt an einer neuen Software und möchte alles in GMT haben. Ich weiß, dass ich date_default_timezone_set ('GMT') verwenden kann, aber das wird MySQL-Einfügungen nicht lösen, wenn die datetime-Spalte auf CURRENT_TIMESTAMP gesetzt ist Einfügen @ CST Zeitzone.

    
buzzmonkey 17.12.2012, 15:12
quelle

2 Antworten

34

Nein, es ist nicht möglich, die Zeitzone für eine einzelne Datenbank innerhalb einer MySQL-Instanz zu ändern.

Sie können die Einstellungen für Server und Client time_zone abrufen:

%Vor%

Sie können auch die Client-Zeitzone oder die Zeitzone für die gesamte MySQL-Instanz ändern.

Seien Sie sich jedoch SEHR bewusst, welche Auswirkungen bestehende Clientverbindungen haben und wie DATETIME- und TIMESTAMP-Werte, die bereits in der Instanz gespeichert sind, interpretiert werden.

Um den Server time_zone beim Start der MySQL-Instanz zu setzen, ändern Sie die /etc/my.cnf -Datei (oder wo auch immer Ihre mysql-Instanz-Initialisierungsparameter gelesen werden) im Abschnitt [mysqld]:

%Vor%

- oder -

Fügen Sie die Option --default_time_zone='+00:00' zu mysqld_safe

hinzu

HINWEIS: Das Ändern der Zeitzoneneinstellung auf dem MySQL-Server ändert NICHT die Werte, die in vorhandenen DATETIME- oder TIMESTAMP-Spalten gespeichert sind, ABER da es den Kontext, in dem diese gespeicherten Werte interpretiert werden, effektiv ändert sieht so aus, als wären alle Werte verschoben. (Wenn 08:00 als 8 AM CST angenommen wurde, wobei die Zeitzone des Servers von CST auf GMT geändert wurde, wird dieselbe '08: 00 'jetzt als 8 Uhr GMT angenommen, was effektiv 2 Uhr CST wäre.

>

Beachten Sie auch, dass TIMESTAMP-Spalten immer in UTC gespeichert werden, während DATETIME-Spalten keine Zeitzone haben. Ссылка

Jede Clientsitzung kann die Zeitzoneneinstellung für ihre eigene Sitzung ändern:

%Vor%

Aber nichts davon "löst" das Zeitzonenumwandlungsproblem wirklich, es verschiebt einfach das Umwandlungsproblem herum.

Es gibt nichts, was von Natur aus "schlecht" ist, wenn die Anwendungsschicht Zeitzonenumwandlungen behandelt; Manchmal ist das der beste Ort, um damit umzugehen. Es muss nur richtig und konsequent gemacht werden.

(Was an der beschriebenen Konfiguration seltsam ist, ist, dass die App DATETIME-Werte speichert, als ob der MySQL-Server time_zone auf GMT eingestellt ist, aber der MySQL-Server time_zone auf etwas anderes eingestellt ist.)

    
spencer7593 17.12.2012, 17:18
quelle
2

Wenn Sie Ihre aktuelle Zeitzone nicht ändern können, können Sie das Ergebnis ändern.

Datum 2015-01-05 12:06:16

%Vor%

Datum 2015-01-05 14:06:16

    
Can Bezmen 09.01.2015 14:47
quelle

Tags und Links