PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Zeitzonenspeicherung im Datentyp timestamp mit Zeitzone

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.