Je suppose que vous avez une colonne nommée ct
qui a le type TIMESTAMPTZ
dans le tableau t
. Ensuite, vous pouvez utiliser :
SELECT EXTRACT(TIMEZONE FROM ct) FROM t;
pour obtenir le décalage du fuseau horaire en secondes. Cela vous donne 3600
depuis UTC
/GMT
cela signifie soit GMT+1
, CET
ou peu importe. La valeur renvoyée dépend de votre TIMEZONE
réglage.
Exemple (j'habite en Allemagne, le fuseau horaire actuel est 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
Comme vous pouvez le voir, il produit toujours quoi que ce soit dans le fuseau horaire configuré. Ainsi, le décalage que vous obtiendrez avec EXTRACT(TIMEZONE FROM ...)
dépend de votre TIMEZONE
paramètre. Le fuseau horaire qui a été donné sur INSERT
est perdu, car il ne vaut pas la peine d'être sauvé. Ce qui compte, c'est que tout est correct et que cela ne doit pas dépendre du TIMEZONE
paramètre. PostgreSQL le fait très bien.