Подтвердить что ты не робот

Как установить часовую зону для 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: Я хочу его в неинтерактивном режиме.

4b9b3361

Ответ 1

В документе 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), вы можете установить эту переменную в свой файл .bashrc (если в Linux)

Ответ 2

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"

Ответ 3

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

Ответ 4

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

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

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

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