Wie stelle ich die Zeitzone für psql auf einen anderen Wert als meine Standardeinstellung (US/Central) ein? Folgendes habe ich bisher ausprobiert:
$ psql
psql (9.1.4, server 9.0.4)
...
$ psql -c 'show timezone'
TimeZone
------------
US/Central
$ psql --set=timezone=US/Eastern -c 'show timezone'
TimeZone
------------
US/Central
$ psql --variable=timezone=US/Eastern -c 'show timezone'
TimeZone
------------
US/Central
Edit : Ich möchte nicht die Server-Zeitzone ändern, nur den Client.
Edit # 2 : Ich möchte es im nicht interaktiven Modus.
Das psql doc sagt:
-v assignment
--set=assignment
--variable=assignment
Perform a variable assignment, like the \set internal command. Note that
you must separate name and value, if any, by an equal sign on the command line....
Aber mit der Zeitzone scheint es nicht zu funktionieren, vielleicht deshalb:
These assignments are done during a very early stage of start-up,
so variables reserved for internal purposes might get overwritten later.
Anscheinend müssen Sie entweder den SET-Befehl in psql verwenden oder die Umgebungsvariable PGTZ setzen:
PGTZ=PST8PDT psql -c 'show timezone'
Wenn Sie die Zeitzone global für den Benutzer festlegen können (nicht nur für diese einzelne psql-Instanz), können Sie diese Variable natürlich in ihrer .bashrc
-Datei festlegen (wenn in Linux)
psql (9.1.4)
Type "help" for help.
richardh=> show timezone;
TimeZone
----------
GB
(1 row)
richardh=> set timezone='UTC';
SET
richardh=> show timezone;
TimeZone
----------
UTC
(1 row)
richardh=> set timezone='US/Eastern';
SET
richardh=> show timezone;
TimeZone
------------
US/Eastern
(1 row)
richardh=> set timezone='blah';
ERROR: invalid value for parameter "TimeZone": "blah"
ALTER USER postgres SET Zeitzone = 'Asien/Tokio';
Viele Clients von Drittanbietern verfügen über eigene Zeitzoneneinstellungen, die alle Postgres-Server- und\oder Sitzungseinstellungen überlappen.
Z.B. Wenn Sie "IntelliJ IDEA 2017.3" (oder DataGrips) verwenden, sollten Sie die Zeitzone wie folgt definieren:
'DB source properties' -> 'Advanced' tab -> 'VM Options': -Duser.timezone=UTC+06:00
andernfalls wird 'UTC' angezeigt, unabhängig davon, was Sie woanders eingestellt haben.