Как установить часовой пояс для 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"

ALTER USER postgres установить часовой пояс= 'Азия / Токио';


обратите внимание, многие сторонние клиенты имеют собственные настройки часового пояса перекрытия любой сервер Postgres и\или настройки сессии.

например. если вы используете " IntelliJ IDEA 2017.3 "(или DataGrips), вы должны определить часовой пояс как:

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

в противном случае вы увидите "UTC", несмотря на то, что вы установили в другом месте.