Dies ist nur ein Missverständnis, das sich aus dem etwas irreführenden Typennamen ergibt. Die Zeitzone selbst wird überhaupt nicht gespeichert . Es fungiert nur als Offset, um einen UTC-Zeitstempel (Eingabe) zu berechnen, der tatsächlich gespeichert wird. Oder als Decorator in der Anzeige eines Zeitstempels entsprechend der aktuellen oder vorgegebenen Zeitzone (Ausgabe). Das ist alles nach dem SQL-Standard.
Es wird nur der Zeitpunkt gespeichert, keine Zoneninformationen. Deshalb reichen 64-Bit-Informationen aus. Der Zeitstempel wird dem Client gemäß der aktuellen Zeitzoneneinstellung der Sitzung angezeigt.
Einzelheiten:
- Zeitzonen in Rails und PostgreSQL komplett ignorieren
Außerdem, da Jon es erwähnt hat, time with time zone
ist im SQL-Standard definiert und daher in Postgres implementiert, aber von seiner Verwendung wird abgeraten:
time with time zone
wird durch den SQL-Standard definiert, aber die Definition weist Eigenschaften auf, die zu fragwürdigem Nutzen führen.
Es ist ein von Natur aus mehrdeutiger Typ, der mit der Sommerzeit nicht richtig umgehen kann.