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

Heure postgres avec égalité de fuseau horaire

Voici deux façons d'évaluer timetz égalité :

SELECT a, b, a = b AS plain_equality
     , '2000-1-1'::date + a = '2000-1-1'::date + b AS ts_equality
     , a AT TIME ZONE 'UTC', b AT TIME ZONE 'UTC'  AS timetz_equality
FROM  (
   SELECT '12:00:00 -0800'::timetz AS a
        , '14:00:00 -0600'::timetz AS b
   ) sub;

Le premier en l'ajoutant à une date .
La seconde en utilisant le AT TIME ZONE construire.

Mais plutôt n'utilisez pas time with time zone du tout.
Postgres prend en charge le type uniquement parce qu'il est dans le standard SQL. Il est cassé par conception (ne peut pas considérer l'heure d'été !) et son utilisation est déconseillée.

Citant le manuel ici :

Le type time with time zone est défini par le standard SQL, mais la définition présente des propriétés qui conduisent à une utilité discutable. Dans la plupart des cas, une combinaison de date , time , timestamp without time zone , et timestamp with time zone devrait fournir une gamme complète de fonctionnalités de date/heure requises par toute application.