sql >> Database >  >> RDS >> PostgreSQL

Postgres-tijd met gelijkheid van tijdzone

Hier zijn twee manieren om timetz te evalueren gelijkheid:

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;

De eerste door het toe te voegen aan een date .
De tweede met behulp van de AT TIME ZONE construeren.

Maar gebruik liever geen time with time zone helemaal niet.
Postgres ondersteunt het type alleen omdat het in de SQL-standaard zit. Het is ontwerpfout (kan geen rekening houden met DST!) en het gebruik ervan wordt afgeraden.

Ik citeer hier de handleiding:

Het type time with time zone wordt gedefinieerd door de SQL-standaard, maar de definitie vertoont eigenschappen die tot twijfelachtige bruikbaarheid leiden. In de meeste gevallen is een combinatie van date , time , timestamp without time zone , en timestamp with time zone moet een volledige reeks datum/tijd-functionaliteit bieden die vereist is voor elke toepassing.




  1. Top 50 SQL Server-interviewvragen die u in 2022 moet voorbereiden

  2. Een databasediagram maken in Access

  3. Toepassing crasht bij installatie met fout sqlite3_exec - Kan synchrone modus =1 (Normaal) niet instellen

  4. join op de kolom van twee verschillende tabellen sqlite3