sql >> Database >  >> RDS >> PostgreSQL

Hoe een tijdzone van een tijdstempel te kennen in postgresql 8.3

Ik neem aan dat je een kolom hebt met de naam ct met het type TIMESTAMPTZ in de tabel t . Dan kunt u het volgende gebruiken:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

om de offset van de tijdzone in seconden te krijgen. Het geeft je 3600 van UTC /GMT dat betekent ofwel GMT+1 , CET of wat dan ook. De geretourneerde waarde is afhankelijk van uw TIMEZONE instelling.

Voorbeeld (ik woon in Duitsland, werkelijke tijdzone is 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

Zoals u kunt zien, voert het altijd iets uit in de geconfigureerde tijdzone. Dus de offset die je krijgt met EXTRACT(TIMEZONE FROM ...) hangt af van uw TIMEZONE instelling. De tijdzone die werd gegeven op INSERT is verloren, omdat het niet de moeite waard is om gered te worden. Het ding dat telt is dat alles correct is en dat mag niet afhangen van de TIMEZONE instelling. PostgreSQL doet dat heel goed.



  1. LUISTEREN/MELDEN pgconnection gaat weg java?

  2. Extraheer het tijdgedeelte uit de TimeStamp-kolom in ORACLE

  3. MySQL-volgorde op tekenreeks met cijfers

  4. Cassandra maskeren met IRI FieldShield