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

Formato data UTC Postgres e cast epocale, inversione del segno

Questo

1970-01-01 00:00:00+01

è un timestamp ISO 8601 con un offset di +1 ora e +1 significa a est di Greenwich. Gli offset in questi

01-01-1970 00:00:00 UTC+01
1970-01-01 00:00:00 UTC+01
1970-01-01 00:00:00 XXX+01
1970-01-01 00:00:00 HAHA+01
1970-01-01 00:00:00 Pancakes+01

verranno interpretati come fusi orari in stile POSIX dove +1 significa ovest di Greenwich:

PostgreSQL accetterà le specifiche del fuso orario in stile POSIX nella forma STDoffset o STDoffsetDST, dove STD è un'abbreviazione di zona, offset è un offset numerico in ore a ovest di UTC

e quelli arrivano anche con un avviso:

Bisogna stare attenti al fatto che la funzione del fuso orario in stile POSIX può portare ad accettare silenziosamente input fasulli, poiché non c'è alcun controllo sulla ragionevolezza delle abbreviazioni delle zone. Ad esempio, SET TIMEZONE TO FOOBAR0 funzionerà, lasciando il sistema effettivamente utilizzando un'abbreviazione piuttosto peculiare per UTC. Un altro problema da tenere a mente è che nei nomi dei fusi orari POSIX vengono utilizzati offset positivi per le località a ovest di Greenwich. Ovunque, PostgreSQL segue la convenzione ISO-8601 secondo cui gli offset positivi del fuso orario sono a est di Greenwich.

Nota la differenza tra ovest e est.