Presumo che tu abbia una colonna denominata ct
che ha il tipo TIMESTAMPTZ
nella tabella t
. Quindi puoi usare:
SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
per ottenere l'offset del fuso orario in secondi. Questo ti dà 3600
da UTC
/GMT
ciò significa o GMT+1
, CET
o altro. Il valore restituito dipende dal tuo TIMEZONE
impostazione.
Esempio (vivo in Germania, il fuso orario attuale è GMT+1
/CET
):
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
timestamptz
------------------------
2008-01-01 18:00:00+01
test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
timestamptz
------------------------
2008-01-01 17:00:00+00
Come puoi vedere, emette sempre qualsiasi cosa nel fuso orario configurato. Quindi l'offset che otterrai con EXTRACT(TIMEZONE FROM ...)
dipende dal tuo TIMEZONE
ambientazione. Il fuso orario indicato su INSERT
è perso, perché non vale la pena di essere salvato. L'importante è che tutto sia corretto e che non debba dipendere dal TIMEZONE
ambientazione. PostgreSQL lo fa molto bene.