Heim >Datenbank >MySQL-Tutorial >Wie kann ich Zeitzonen richtig handhaben, wenn ich Java mit einer MySQL-Datenbank verbinde?
MySQL arbeitet mit der Zeitzone „GMT 8“, während Tomcat „GMT“ verwendet. Beim Speichern von datetime in der Datenbank scheinen die Werte korrekt zu sein, beim Abrufen werden jedoch die „GMT“-Werte angezeigt. Außerdem werden aus der Datenbank abgerufene Werte in „GMT“ konvertiert, was darauf hindeutet, dass die Datenbank sie als „GMT 8“ betrachtet.
Der Parameter „useTimezone“ ist eine veraltete Problemumgehung. Für eine moderne Lösung legen Sie useLegacyDatetimeCode=false fest und führen ein Upgrade auf den neuesten MySQL-JDBC-Connector durch. Eine Beispiel-Verbindungs-URL:
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false
Wenn useLegacyDatetimeCode auf false gesetzt ist, wird die Methode newSetTimestampInternal() aufgerufen. Wenn der bereitgestellte Kalender null ist, wird das Datumsobjekt in der Zeitzone der Datenbank formatiert:
this.tsdf = new SimpleDateFormat("''yyyy-MM-dd HH:mm:ss", Locale.US); this.tsdf.setTimeZone(this.connection.getServerTimezoneTZ()); timestampString = this.tsdf.format(x);
Um das Datum abzurufen, verwenden Sie getTimestamp(int) ohne den Kalender. Auch hier wird die Zeitzone der Datenbank zum Erstellen des Datums verwendet.
Die Zeitzone des Webservers ist jetzt für die Formatierung irrelevant. Wenn useLegacyDatetimecode wahr bleibt, wird die Zeitzone des Webservers verwendet, was zu Verwirrung führt.
MySQL kann sich über Unklarheiten in der Serverzeitzone beschweren, wenn es beispielsweise auf EST eingestellt ist. Um dieses Problem zu beheben, geben Sie die genaue EST-Zeitzone in der Verbindungs-URL an:
jdbc:mysql://localhost/mydb?useLegacyDatetimeCode=false&serverTimezone=America/New_York
Dies ist nur erforderlich, wenn MySQL das Mehrdeutigkeitsproblem aufwirft.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeitzonen richtig handhaben, wenn ich Java mit einer MySQL-Datenbank verbinde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!