sql >> Databáze >  >> RDS >> PostgreSQL

Postgres čas s časovou zónou rovnosti

Zde jsou dva způsoby, jak vyhodnotit timetz rovnost:

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;

První přidáním k date .
Druhý pomocí AT TIME ZONE konstrukce.

Ale raději nepoužívejte time with time zone vůbec.
Postgres podporuje typ pouze proto, že je ve standardu SQL. Je nefunkční svým designem (nemůže uvažovat DST!) a jeho použití se nedoporučuje.

Zde cituji manuál:

Typ time with time zone je definováno standardem SQL, ale definice vykazuje vlastnosti, které vedou k pochybné užitečnosti. Ve většině případů kombinace date , time , timestamp without time zone a timestamp with time zone by měl poskytovat kompletní rozsah funkcí data/času požadovaných jakoukoli aplikací.




  1. Jak získat další/předchozí záznam v MySQL?

  2. Oracle RAC VIP a ARP Primer

  3. MySQL – NEJMENŠÍ a NEJVĚTŠÍ srovnávací operátory

  4. instalace postgres selhala inicializace databázového clusteru ( Postgresql verze 9.4.4 )