2016-08-08 69 views
0

Ich habe eine Pg-Datenbank mit einem Spaltentyp Zeitstempel mit Zeitzone. I eingefügt das folgende Datum:Postgresql Datum Zeitzone Problem

2016.08.01 00:00:00 GMT

jedoch in der Datenbank, zeigt sich, wie:

2016-07-31 20:00:00 -04

Weiß jemand, was passieren könnte?

Vielen Dank im Voraus!

+0

Sind Sie sicher, dass die Eingabe zu dieser Anzeige führt? Ein Unterschied von ein paar Stunden wäre ein Zeitzonenproblem (daher das "-04"), aber von 08-16 bis 07-31 ist ein bisschen viel. BTW, warum verwenden Sie eine Zeitstempelspalte für ein Datum, wenn es einen perfekt wartbaren Datumstyp gibt? –

+0

hi - Entschuldigung, ich habe die falsche Eingabe eingefügt und nur meine Frage aktualisiert. –

+2

Also nur eine Zeitzoneneinstellung von vier Stunden, der gleiche Zeitstempel, aber in einer Zeitzone von -04 angezeigt. –

Antwort

1

Trotz des Namens TIMESTAMP WITH TIME ZONE nicht tatsächlich speichern die Zeitzone. Es verwendet die Zeitzone der Sitzung, um auf UTC zu normalisieren, und speichert UTC. Beim Abruf konvertiert es zurück von UTC in die Sitzungszeitzone.

Sie können die Sitzungszeitzone mithilfe des Befehls SET TIME ZONE ändern. Vorzugsweise sollten Sie the standard IANA time zone identifiers verwenden. Zum Beispiel:

SET TIME ZONE 'Europe/Paris' 

oder

SET TIME ZONE 'UTC' 

Alternativ verwenden Sie die TIMESTAMP [WITHOUT TIME ZONE] Art statt, die keine Conversions tut.