Comment définir le fuseau horaire de Postgres psql?

comment définir le timezone pour psql à quelque chose d'autre que mon défaut (US/Central)? Voici ce que j'ai essayé jusqu'à présent:

$ 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

Modifier: Je ne veux pas changer le fuseau horaire du serveur, juste le client.

Edit #2: je veux l'avoir en mode non-interactif.

24
demandé sur dfrankow 2012-08-02 18:14:00

4 réponses

psql doc a dit:

-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....

mais avec le fuseau horaire cela ne semble pas fonctionner, peut-être parce qu'à cause de cela:

 These assignments are done during a very early stage of start-up, 
 so variables reserved for internal purposes might get overwritten later.

donc, il semble que vous devez soit utiliser la commande SET à l'intérieur de psql, soit définir PGTZ variable d'environnement:

PGTZ=PST8PDT psql -c 'show timezone'

bien sûr, si vous êtes D'accord pour définir le fuseau horaire globalement pour l'utilisateur( et pas seulement pour cette instance psql), vous pouvez définir cette variable dans son .bashrc le fichier (si sous Linux)

17
répondu leonbloy 2014-10-02 13:18:12
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"
23
répondu Richard Huxton 2012-08-02 14:20:04

ALTER USER postgres SET timezone= 'Asia / Tokyo' ;

12
répondu Abhilash Mishra 2016-05-20 06:19:22

notez que de nombreux clients tiers ont leurs propres paramètres de fuseau horaire qui chevauchent les paramètres du serveur Postgres et de la session.

E. G. si vous utilisez 'IntelliJ IDEA 2017.3' (ou DataGrips), vous devez définir timezone comme:

'DB source properties' -> 'Advanced' tab -> 'VM Options': -Duser.timezone=UTC+06:00

sinon vous verrez 'UTC' malgré ce que vous avez mis ailleurs.

0
répondu ARA1307 2018-01-09 18:53:22