Ich habe installiert PostgreSQL 9
und die angezeigte Zeit liegt 1 Stunde hinter der Serverzeit.
Laufende Select NOW()
Shows:2011-07-12 11:51:50.453842+00
Das Serverdatum zeigt: Tue Jul 12 12:51:40 BST 2011
Es ist 1 Stunde zurück, aber die in gezeigte Zeitzone phppgadmin
ist:TimeZone Etc/GMT0
Ich habe versucht, in die postgresql.conf
und Einstellung zu gehen
Zeitzone = GMT
dann einen Neustart ausführen, aber keine Änderung.
Irgendwelche Ideen, von denen ich dachte, dass sie nur die Server-Zeitzone verwendet hätten, aber offensichtlich nicht?!
LÖSUNG!: Ich habe es GMT
vorher eingestellt und es war eine Stunde später. Nach dem Durchsuchen stellte sich heraus, dass ich es einstellen musste Europe/London
. Dies berücksichtigt die +1 Stunde im britischen Sommer, GMT nicht!
quelle
SET TIME ZONE 'UTC';
. Siehe das Dokument .Wählen Sie eine
timezone
aus:Und
set
wie unten angegebenes Beispiel:Verwenden Sie Ihren DB-Namen anstelle der
postgres
obigen Anweisung.quelle
SELECT pg_reload_conf();
SELECT pg_reload_conf()
kehrte wahr, abernow()
undselect current_setting('TIMEZONE')
weiterhin Werte zurück für ‚America / New_York‘. Liegt es daran, dass ich kein Superuser bin?Um die Zeitzonenänderung in Postgres 9.1 durchzuführen, müssen Sie:
1.- Suchen Sie in Ihrem Ordner "timezones" in /usr/share/postgresql/9.1/ nach der entsprechenden Datei. In meinem Fall wäre dies "America.txt". Suchen Sie darin nach dem nächstgelegenen Speicherort für Ihre Zone und kopieren Sie den Ordner Anfangsbuchstaben in der linken Spalte.
Zum Beispiel: Wenn Sie in "New York" oder "Panama" sind, wäre es "EST":
2.- Kommentieren Sie die Zeile "Zeitzone" in Ihrer
postgresql.conf
Datei aus und geben Sie Ihre Zeitzone wie folgt ein :3.- Starten Sie Postgres neu
quelle
−05:00
ganzjährigen Versatz, während New York eine Stunde mit Sommerzeit (DST) verschiebt. Eine Zeitzone ist mehr als ein Versatz. Eine Zeitzone umfasst die vergangenen, gegenwärtigen und zukünftigen Regeln und Anomalien wie die Sommerzeit. Also, sagen , was Sie meinen:America/Panama
,America/New_York
,Europe/London
,UTC
(oderZulu
).SELECT * FROM pg_timezone_names
was wahrscheinlich sicherer ist, da Websites von Drittanbietern nicht unbedingt so aktuell sind (oder veraltet) als Ihre eigene Datenbankinstanz.postgresql
select pg_reload_conf()
.Die akzeptierte Antwort von Muhammad Usama ist richtig.
Name des Konfigurationsparameters
Diese Antwort zeigt, wie ein Postgres-spezifischer Konfigurationsparameter wie folgt festgelegt wird:
… Wo
timezone
es sich nicht um einen SQL-Befehl handelt, ist dies der Name des Konfigurationsparameters.Siehe dazu das Dokument .
Standard SQL Befehl
Alternativ können Sie den SQL-Befehl verwenden, der durch die SQL-Spezifikation definiert ist :
SET TIME ZONE
. In dieser SyntaxTIME ZONE
ersetzen zwei Wörter "Zeitzone" (tatsächlicher SQL-Befehl versus Parametername), und es gibt kein "TO".Sowohl dieser als auch der obige Befehl haben den gleichen Effekt, um den Wert nur für die aktuelle Sitzung festzulegen. Um die Änderung dauerhaft zu machen, lesen Sie diese Antwort der Geschwister .
Siehe dazu das Dokument .
Name der Zeitzone
Sie können einen geeigneten Zeitzonennamen angeben . Die meisten davon sind Kontinente / Regionen.
…oder…
Vermeiden Sie die 3 oder 4 Buchstaben Abkürzungen wie
EST
oderIST
wie sie weder standardisiert noch einzigartig. In Wikipedia finden Sie eine Liste der Zeitzonennamen .Aktuelle Zone abrufen
Versuchen Sie eine der folgenden Anweisungen, um die aktuelle Zeitzone für eine Sitzung anzuzeigen. Technisch rufen wir den
SHOW
Befehl auf, um einen Laufzeitparameter anzuzeigen.…oder…
quelle
SHOW
Teil liefertSELECT current_setting('TIMEZONE')
Wenn Sie das Tool pgAdmin III verwenden , können Sie zusätzlich zu den vorherigen Antworten die Zeitzone wie folgt einstellen:
quelle
Beachten Sie, dass viele Clients von Drittanbietern eigene Zeitzoneneinstellungen haben, die sich mit allen Postgres-Server- und / oder Sitzungseinstellungen überschneiden.
Wenn Sie beispielsweise 'IntelliJ IDEA 2017.3' (oder DataGrips) verwenden, sollten Sie die Zeitzone wie folgt definieren:
'DB-Quelleneigenschaften' -> Registerkarte 'Erweitert' -> 'VM-Optionen': -Duser.timezone = UTC + 06: 00
Andernfalls wird "UTC" angezeigt, obwohl Sie irgendwo anders eingestellt haben.
quelle
Vielleicht nicht mit der Frage verbunden, aber ich musste CST verwenden, die Systemzeitzone auf das gewünschte tz (Amerika / ...) einstellen und dann in postgresql conf den Wert der Zeitzone auf 'localtime' setzen und es funktionierte als Zauber , current_time druckt zum richtigen Zeitpunkt (Postgresql 9.5 unter Ubuntu 16)
quelle