Suponho que você tenha uma coluna chamada
ct que tem o tipo TIMESTAMPTZ na tabela t . Então você pode usar:SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
para obter o deslocamento do fuso horário em segundos. É o que lhe dá
3600 de UTC /GMT isso significa que GMT+1 , CET como queiras. O valor retornado depende do seu TIMEZONE contexto. Exemplo (moro na Alemanha, fuso horário real é
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 você pode ver, sempre gera qualquer coisa no fuso horário configurado. Portanto, o deslocamento que você obterá com
EXTRACT(TIMEZONE FROM ...) depende do seu TIMEZONE contexto. O fuso horário que foi fornecido em INSERT está perdido, porque não vale a pena ser salvo. O que conta é que tudo está correto e isso não deve depender do TIMEZONE contexto. O PostgreSQL faz isso muito bem.