PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Zeit mit Zeitzonengleichheit

Hier sind zwei Möglichkeiten, timetz auszuwerten Gleichheit:

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;

Die erste durch Hinzufügen zu einem date .
Zweitens durch Verwendung des AT TIME ZONE konstruieren.

Verwenden Sie aber lieber nicht time with time zone überhaupt.
Postgres unterstützt den Typ nur, weil er im SQL-Standard enthalten ist. Es ist konstruktionsbedingt defekt (Sommerzeit kann nicht berücksichtigt werden!) und von seiner Verwendung wird abgeraten.

Zitieren Sie das Handbuch hier:

Der Typ time with time zone wird vom SQL-Standard definiert, aber die Definition weist Eigenschaften auf, die zu fragwürdigem Nutzen führen. Meistens eine Kombination aus date , time , timestamp without time zone , und timestamp with time zone sollte eine vollständige Reihe von Datums-/Uhrzeitfunktionen bieten, die von jeder Anwendung benötigt werden.