Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL TIMESTAMPTZ

PostgreSQL `TIMESTAMPTZ` est un type de données qui stocke à la fois la date et l'heure avec des informations sur le fuseau horaire. Il est essentiel pour les applications qui nécessitent un chronométrage précis dans différents fuseaux horaires.

Utilisation

Le type `TIMESTAMPTZ` est utilisé pour stocker des données d'horodatage qui tiennent compte des différences de fuseaux horaires, assurant ainsi la cohérence des applications sensibles au temps. Il est souvent utilisé dans des scénarios impliquant des transactions de données globales et des événements de journalisation. En interne, `TIMESTAMPTZ` stocke tous les timestamps en UTC et les convertit en fonction du fuseau horaire du client lors de la récupération, assurant ainsi la cohérence entre les différentes régions.

sql
CREATE TABLE event_logs (
    event_id SERIAL PRIMARY KEY,
    event_name VARCHAR(255),
    event_timestamp TIMESTAMPTZ
);

Dans cette syntaxe, `event_timestamp TIMESTAMPTZ` enregistre l'heure exacte de l'événement, y compris le fuseau horaire.

Exemples

1. Insertion de base de TIMESTAMPTZ

sql
INSERT INTO event_logs (event_name, event_timestamp)
VALUES ('System Update', '2023-10-25 14:30:00+00');

Cet exemple insère un événement avec un horodatage spécifique en UTC, y compris les informations relatives au fuseau horaire UTC.

2. Récupération du TIMESTAMPTZ actuel

sql
SELECT NOW()::TIMESTAMPTZ AS current_time;

Ici, la fonction `NOW()` récupère la date et l'heure actuelles, automatiquement ajustées au fuseau horaire du serveur, et les convertit en `TIMESTAMPTZ`.

3. Conversion de TIMESTAMPTZ vers un autre fuseau horaire

sql
SELECT event_name, 
       event_timestamp AT TIME ZONE 'America/New_York' AS event_time_est
FROM event_logs;

Cet exemple convertit le `TIMESTAMPTZ` enregistré en heure normale de l'Est (EST) à des fins d'affichage, et ne modifie pas l'horodatage enregistré.

Conseils et bonnes pratiques

  • Utilisez TIMESTAMPTZ pour les applications globales. Il garantit la cohérence des horaires dans les différentes régions.
  • Tenez compte des conversions de fuseaux horaires. Indiquez toujours le fuseau horaire lorsque vous convertissez ou comparez des horodatages.
  • Tirez parti des fonctions intégrées. Utilisez les fonctions de PostgreSQL comme `NOW()` ou `CURRENT_TIMESTAMP` pour une récupération dynamique de l'horodatage.
  • Gardez à l'esprit l'efficacité du stockage. Bien que `TIMESTAMPTZ` soit puissant, assurez-vous de sa nécessité car il peut consommer plus d'espace de stockage que `TIMESTAMP` sans fuseau horaire. Pensez à utiliser `TIMESTAMP` sans fuseau horaire pour les applications localisées où les fuseaux horaires ne sont pas un problème.
  • Définissez correctement le paramètre de configuration `timezone` du serveur PostgreSQL. Cela garantit le comportement attendu des conversions de fuseaux horaires et une récupération précise de l'heure.
  • Tenez compte des changements d'heure d'été (DST). `TIMESTAMPTZ` s'ajuste automatiquement à l'heure d'été, ce qui est crucial pour les applications sensibles aux changements d'heure. Assurez-vous que les paramètres du fuseau horaire de votre serveur gèrent correctement l'heure d'été et l'heure d'hiver.