PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Horário Postgres com igualdade de fuso horário


Aqui estão duas maneiras de avaliar timetz igualdade:
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;

O primeiro adicionando-o a uma date .
O segundo usando o AT TIME ZONE construir.

Mas não use time with time zone em tudo.
O Postgres suporta o tipo apenas porque está no padrão SQL. Ele está quebrado por design (não pode considerar o horário de verão!) e seu uso é desencorajado.

Citando o manual aqui:

O tipo time with time zone é definido pelo padrão SQL, mas a definição exibe propriedades que levam a uma utilidade questionável. Na maioria dos casos, uma combinação de date , time , timestamp without time zone e timestamp with time zone deve fornecer uma gama completa de funcionalidades de data/hora exigidas por qualquer aplicativo.