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