Как установить часовой пояс для Postgres psql?
Как установить часовой пояс для psql на что-то другое, кроме моего значения по умолчанию (US/Central)? Вот что я пробовал до сих пор:
$ 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
редактировать: Я не хочу менять часовой пояс сервера, только клиент.
правка #2: Я хочу его в неинтерактивном режиме.
4 ответов
на psql в доктор сказал:
-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....
но с часовым поясом это, похоже, не работает, возможно, потому, что из-за этого:
These assignments are done during a very early stage of start-up,
so variables reserved for internal purposes might get overwritten later.
Итак, кажется, вы должны либо использовать команду SET внутри psql, либо установить PGTZ переменные среды:
PGTZ=PST8PDT psql -c 'show timezone'
конечно, если вы в порядке с установкой часового пояса глобально для пользователя (не только для этого отдельного экземпляра psql), вы можете установить эту переменную в его (если в 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"
обратите внимание, многие сторонние клиенты имеют собственные настройки часового пояса перекрытия любой сервер Postgres и\или настройки сессии.
например. если вы используете " IntelliJ IDEA 2017.3 "(или DataGrips), вы должны определить часовой пояс как:
'DB source properties' -> 'Advanced' tab -> 'VM Options': -Duser.timezone=UTC+06:00
в противном случае вы увидите "UTC", несмотря на то, что вы установили в другом месте.