Re: Fun avec les TZ
"Daniel Verite" <[email protected]> Sun, 22 Oct 2017 09:27:53 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
Bruno Friedmann wrote: > 'Sat Oct 21 15:01:06 GMT+02:00 2017'::timestamptz, > 'Sat Oct 21 15:01:06 GMT+02:00 2017'::timestamp, > 'Sat Oct 21 15:01:06 +02:00 2017'::timestamptz; > > 2017-10-21 19:01:06+02 > 2017-10-21 15:01:06 > 2017-10-21 15:01:06+02 > > On voit bien que l'interprétation de GMT+2 donne un résultat > abhérant de 19h00 pour un 15h00 CEST (c'est genre +2+2). En fait le résultat est juste parce que pour la norme POSIX, GMT+02:00 c'est 2 heures à l'ouest du méridien de Greenwich, au contraire de l'expression de la 3eme colonne qui fait référence à la norme ISO-8601, orientée dans l'autre sens (2 heures à l'est de Greenwich), celui qui est utilisé le plus souvent. Quand on est 2h à l'est de GMT, par exemple l'heure d'été française, on est bien décalé de 4h par rapport à un fuseau qui serait 2h à l'ouest de GMT. Cf la doc: https://doc.postgresql.fr/10/datatype-datetime.html " Un autre problème à conserver en tête est que, pour les noms des fuseaux horaires POSIX, les décalages positifs sont utilisés pour les emplacements situés à l'ouest de Greenwich. Partout ailleurs, PostgreSQL™ suit la convention ISO-8601 pour qui les décalages positifs de fuseaux horaires concernent l'est de Greenwich" La même confusion existe en-dehors de Postgres, par exemple sur un système Ubuntu, avec la commande date du système et une conf locale sur Europe/Paris: $ date dimanche 22 octobre 2017, 09:23:06 (UTC+0200) $ TZ=GMT+2 date dimanche 22 octobre 2017, 05:23:06 (UTC-0200) parce que TZ suit POSIX alors que l'affichage par défaut de la date suit l'autre convention. -- Daniel Vérité PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite -- Envoi via la liste pgsql-fr-generale ([email protected])