sql >> Base de Datos >  >> RDS >> PostgreSQL

Hora de Postgres con igualdad de zona horaria

Aquí hay dos formas de evaluar timetz igualdad:

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;

El primero agregándolo a una date .
La segunda mediante el AT TIME ZONE construir.

Pero mejor no uses time with time zone en absoluto.
Postgres admite el tipo solo porque está en el estándar SQL. Está roto por diseño (¡no se puede considerar DST!) y se desaconseja su uso.

Citando el manual aquí:

El tipo time with time zone está definido por el estándar SQL, pero la definición exhibe propiedades que conducen a una utilidad cuestionable. En la mayoría de los casos, una combinación de date , time , timestamp without time zone y timestamp with time zone debe proporcionar una gama completa de funciones de fecha/hora requeridas por cualquier aplicación.