web-dev-qa-db-fra.com

Comment définir un fuseau horaire pour Postgres psql?

Comment définir le fuseau horaire de psql sur autre chose que ma valeur par 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

Edit : Je ne veux pas changer le fuseau horaire du serveur, mais seulement le client.

Edit # 2 : Je le veux en mode non interactif.

25
dfrankow

Le psql doc 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 pour cette raison:

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

Il semble donc que vous deviez utiliser la commande SET dans psql ou définir la variable PGTZ :

PGTZ=PST8PDT psql -c 'show timezone'

Bien sûr, si vous êtes prêt à définir le fuseau horaire globalement pour l'utilisateur (pas seulement pour cette instance individuelle de psql), vous pouvez définir cette variable dans son fichier .bashrc (si sous 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 timezone = 'Asie/Tokyo';

15
Abhilash Mishra

Remarque: de nombreux clients tiers ont leurs propres paramètres de fuseau horaire qui chevauchent les paramètres du serveur et/ou de la session Postgres.

Par exemple. Si vous utilisez 'IntelliJ IDEA 2017.3' (ou DataGrips), vous devez définir le fuseau horaire comme suit:

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

sinon, vous verrez «UTC» malgré tout ce que vous avez défini ailleurs.

0
ARA1307