web-dev-qa-db-ja.com

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:非インタラクティブモードで使用します。

25
dfrankow

psql docによると:

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

そのため、psql内でSETコマンドを使用するか、または [〜#〜] pgtz [〜#〜] 環境変数を設定する必要があります。

PGTZ=PST8PDT psql -c 'show timezone'

もちろん、(この個別のpsqlインスタンスだけでなく)ユーザーのタイムゾーンをグローバルに設定しても問題なければ、その変数を.bashrcファイル(Linuxの場合)

18
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 = 'Asia/Tokyo';

17
Abhilash Mishra

多くのサードパーティクライアントには、Postgresサーバーやセッション設定と重複する独自のタイムゾーン設定があります。

例えば。 'IntelliJ IDEA 2017.3'(またはDataGrips))を使用している場合、タイムゾーンを次のように定義する必要があります。

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

それ以外の場合は、他の場所で設定したものに関係なく「UTC」が表示されます。

0
ARA1307