Supongo que tiene una columna llamada ct
que tiene el tipo TIMESTAMPTZ
en la tabla t
. Entonces puedes usar:
SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
para obtener el desplazamiento de la zona horaria en segundos. Eso te da 3600
desde UTC
/GMT
eso significa GMT+1
, CET
o lo que sea. El valor devuelto depende de su TIMEZONE
ajuste.
Ejemplo (Vivo en Alemania, la zona horaria actual es 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
Como puede ver, siempre genera cualquier cosa en la zona horaria configurada. Entonces, el desplazamiento que obtendrá con EXTRACT(TIMEZONE FROM ...)
depende de tu TIMEZONE
ajuste. La zona horaria que se proporcionó en INSERT
se pierde, porque no vale la pena ser salvado. Lo que cuenta es que todo esté correcto y que no deba depender de la TIMEZONE
ajuste. PostgreSQL lo hace muy bien.