sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres tid med tidszonslikhet

Här är två sätt att utvärdera timetz jämställdhet:

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;

Den första genom att lägga till den i ett date .
Den andra genom att använda AT TIME ZONE konstruera.

Men använd inte time with time zone alls.
Postgres stöder typen bara för att den finns i SQL-standarden. Den är trasig av design (kan inte överväga sommartid!) och dess användning avråds.

Citerar manualen här:

Typen time with time zone definieras av SQL-standarden, men definitionen uppvisar egenskaper som leder till tvivelaktig användbarhet. I de flesta fall är en kombination av date , time , timestamp without time zone och timestamp with time zone bör tillhandahålla ett komplett utbud av datum/tid-funktioner som krävs av alla program.




  1. Där värde i kolumn som innehåller kommaavgränsade värden

  2. Hur man återställer MySQL-databas från .myd-, .myi-, .frm-filer

  3. FORALL-uttalande med nedre och övre gräns i Oracle-databasen

  4. Hur du hanterar din databas med Adminer