PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Ora di Postgres con uguaglianza di fuso orario

Ecco due modi per valutare timetz uguaglianza:

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;

Il primo aggiungendolo a una date .
Il secondo utilizzando il AT TIME ZONE costruire.

Ma piuttosto non usare time with time zone affatto.
Postgres supporta il tipo solo perché è nello standard SQL. È rotto dal design (non posso considerare l'ora legale!) e il suo utilizzo è sconsigliato.

Citando il manuale qui:

Il tipo time with time zone è definito dallo standard SQL, ma la definizione mostra proprietà che portano a un'utilità discutibile. Nella maggior parte dei casi, una combinazione di date , time , timestamp without time zone e timestamp with time zone dovrebbe fornire una gamma completa di funzionalità data/ora richieste da qualsiasi applicazione.