sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan kender du en tidszone for et tidsstempel i postgresql 8.3

Jeg går ud fra, at du har en kolonne ved navn ct som har typen TIMESTAMPTZ i tabellen t . Så kan du bruge:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

for at få forskydningen af ​​tidszonen i sekunder. Det, der giver dig 3600 fra UTC /GMT det betyder enten GMT+1 , CET eller hvad som helst. Den returnerede værdi afhænger af din TIMEZONE indstilling.

Eksempel (jeg bor i Tyskland, den faktiske tidszone er GMT+1 /CET ):

test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 18:00:00+01

test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 17:00:00+00

Som du kan se, udsender den altid hvad som helst i den konfigurerede tidszone. Så den offset du får med EXTRACT(TIMEZONE FROM ...) afhænger af din TIMEZONE indstilling. Tidszonen, som blev givet på INSERT er tabt, fordi det ikke er værd at blive frelst. Det der tæller er, at alt er korrekt, og det bør ikke afhænge af TIMEZONE indstilling. PostgreSQL gør det meget godt.



  1. Dvale generationsindeks og fremmednøgle med samme navn til MySQL

  2. hive.HiveImport:FAILED:SemanticException [Fejl 10072]:Databasen eksisterer ikke:

  3. MySQL Vælg flere værdier

  4. Brug af ADO asynkront i Microsoft Access for at fremskynde formularer