Introduction
Le 8 mars 2026, la Colombie-Britannique a adopté l'heure d'été du Pacifique pour toute l'année. Cela signifie que les horloges ont avancé d'une heure en mars pour passer à l'UTC-7, mais elles ne reviendront pas à l'UTC-8 en novembre. Cette modification a des implications pour le stockage et la gestion des dates et des heures dans les bases de données, notamment avec Postgres.
Contexte Technique
La gestion des fuseaux horaires et des heures dans les bases de données peut être complexe, surtout lorsqu'il y a des changements dans les règles de temps. Les colonnes de type timestamptz dans Postgres stockent l'heure UTC, et le fuseau horaire est utilisé pour convertir les heures lors de l'insertion et de la requête. Cependant, si les règles de temps changent après le stockage, les heures locales calculées peuvent ne pas correspondre à l'intention originale de l'utilisateur.
Analyse et Implications
Les changements dans les règles de temps peuvent avoir des impacts significatifs sur les applications qui gèrent des rendez-vous ou des événements futurs. Si les données sont stockées dans des colonnes timestamptz sans tenir compte des changements de règles de temps, les heures locales calculées peuvent être incorrectes. Cela peut entraîner des problèmes de synchronisation et des erreurs dans les applications.
Perspective
Pour éviter ces problèmes, il est recommandé d'utiliser un modèle de colonnes doubles, qui stocke les heures locales et les fuseaux horaires séparément, ainsi que l'heure UTC calculée. Cela permet de conserver l'intention originale de l'utilisateur et de gérer les changements de règles de temps de manière efficace. Il est également important de mettre à jour régulièrement les packages tzdata pour refléter les changements dans les règles de temps.