wake-up-neo.net

Zeitzone für Postgres psql einstellen

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.

25
dfrankow

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)

17
leonbloy
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"
24
Richard Huxton

ALTER USER postgres SET Zeitzone = 'Asien/Tokio';

15
Abhilash Mishra

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.

0
ARA1307