PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Archiviazione del fuso orario nel tipo di dati timestamp con fuso orario

Questo è solo un malinteso derivante dal nome del tipo alquanto fuorviante. Il fuso orario stesso non è affatto memorizzato . Agisce solo come offset per calcolare un timestamp UTC (input), che è effettivamente memorizzato. Oppure come decoratore nella visualizzazione di un timestamp in base al fuso orario corrente o dato (output). Questo è tutto secondo lo standard SQL.

Viene memorizzato solo il momento, nessuna informazione sulla zona. Ecco perché 64 bit di informazioni sono sufficienti. Il timestamp viene visualizzato al client in base all'impostazione del fuso orario corrente della sessione.

Dettagli:

  • Ignora del tutto i fusi orari in Rails e PostgreSQL

Inoltre, poiché Jon l'ha menzionato, time with time zone è definito nello standard SQL e quindi implementato in Postgres, ma il suo utilizzo è sconsigliato:

time with time zone è definito dallo standard SQL, ma la definizione mostra proprietà che portano a un'utilità discutibile.

È un tipo intrinsecamente ambiguo che non può gestire correttamente l'ora legale.