timestampinfo.fr
Outils & documentation

LA DOCUMENTATION DU TEMPS

Timestamps PostgreSQL et fuseaux horaires

Choisir timestamp ou timestamptz et convertir les secondes Unix sans confusion.

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.000000

Interpré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é.

Références

Documentation de référence

Ouvrir le convertisseur