timestamp n’est pas timestamptz
timestamp without time zone conserve des champs date et heure sans fuseau. timestamp with time zone, abrégé timestamptz, représente un instant. Le fuseau géographique original n’est pas conservé dans cette valeur.
CREATE TABLE events (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
occurred_at timestamptz NOT NULL
);
INSERT INTO events (occurred_at)
VALUES ('2024-04-01T14:00:00+02:00');Conversion depuis et vers Unix
SELECT to_timestamp(1711972800) AT TIME ZONE 'UTC';
-- 2024-04-01 12:00:00
SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '2024-04-01T14:00:00+02:00');
-- 1711972800.000000Interpréter une date locale
Si une colonne sans fuseau est connue pour représenter l’heure de Paris, AT TIME ZONE 'Europe/Paris' permet de l’interpréter dans ce fuseau. Vérifiez les heures ambiguës au changement d’heure avant une migration.
SELECT TIMESTAMP '2024-04-01 14:00:00'
AT TIME ZONE 'Europe/Paris';Le résultat timestamptz s’affiche selon le fuseau de session. Fixer SET TIME ZONE 'UTC' facilite le diagnostic ; cela ne modifie pas l’instant stocké.