Ich entschuldige mich für die sehr grundsätzliche Frage, ich glaube, ich weiß die Antwort würde aber überprüfen, wie:Anforderung zur Überprüfung - Wie Datenbanken und Java Zeitzonen speichern und verarbeiten?
Wann Zeitzonen beziehe und wie sie in der Regel in einer Datenbank und in einem java.util.Date gespeichert:
- wenn ein Datumsfeld in einer Datenbank zu speichern, ist es Zeitzone Agnostiker (zB immer in UTC gespeichert)
- wenn ein Java-Datum mit dem Date-Objekt ist es auch Zeitzone Agnostiker
- Zeitzone nur depeneded wird, wenn Formatieren und Parsen von Daten (DB und Java)
- Java Bei der Verwendung von - wird es die JVM user.timezone zu Format verwenden/parsen Daten
- Wenn Java unter Windows verwenden - Java automatisch
- Die Datenbank Zeitzone dies von den regionalen Einstellungen nehmen (und es ist Zeitzone der Maschine) ist irrelevant für die Java-JDBC-Client
- die Zeitzone des Datenbank-Server ist für die direkte SQL-Parsing und Formatierung
Meine Fragen nur relevant sind:
- Sind alle obigen Annahmen richtig? einige sind? alle incorrect?
- Gibt es eine Referenz/offizielle Quelle, die dies "offiziell" bestätigt?
So hatte ich Recht, Zeitzone ist für die Formatierung, und alle Daten speichern als "UTC" entweder per Definition oder Konvention ... ist das richtig? –
In Java sind sie alle UTC. In Datenbanksystemen variiert die Speichermethode, aber in der Regel wird etwas wie 2010-12-25 12:30:15 unabhängig von den Zeitzonen genau so gespeichert und zurückgesendet, wie es geschrieben wurde. Sie können mit HSQLDB 2.0.1 versuchen, die TIMESTAMP WITH TIME ZONE sowie ohne Zeitzone unterstützt und die Ergebnisse sehen. – fredt