PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Format de date UTC Postgres et distribution d'époque, inversion de signe

Ceci

1970-01-01 00:00:00+01

est un horodatage ISO 8601 avec un décalage de +1 heure et +1 signifie à l'est de Greenwich. Les décalages dans ces

01-01-1970 00:00:00 UTC+01
1970-01-01 00:00:00 UTC+01
1970-01-01 00:00:00 XXX+01
1970-01-01 00:00:00 HAHA+01
1970-01-01 00:00:00 Pancakes+01

seront interprétés comme des fuseaux horaires de style POSIX où +1 signifie ouest de Greenwich :

PostgreSQL acceptera les spécifications de fuseau horaire de style POSIX sous la forme STDoffset ou STDoffsetDST, où STD est une abréviation de zone, offset est un décalage numérique en heures à l'ouest de UTC

et ceux-ci sont même accompagnés d'un avertissement :

Il faut se méfier du fait que la fonctionnalité de fuseau horaire de style POSIX peut conduire à accepter silencieusement de fausses entrées, car il n'y a aucun contrôle sur le caractère raisonnable des abréviations de zone. Par exemple, SET TIMEZONE TO FOOBAR0 fonctionnera, laissant le système utiliser efficacement une abréviation plutôt particulière pour UTC. Un autre problème à garder à l'esprit est que dans les noms de fuseaux horaires POSIX, des décalages positifs sont utilisés pour les emplacements à l'ouest de Greenwich. Partout ailleurs, PostgreSQL suit la convention ISO-8601 selon laquelle les décalages de fuseau horaire positifs sont à l'est de Greenwich.

Notez la différence entre l'ouest et l'est.