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:非インタラクティブモードで使用します。
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の場合)
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 SET timezone = 'Asia/Tokyo';
多くのサードパーティクライアントには、Postgresサーバーやセッション設定と重複する独自のタイムゾーン設定があります。
例えば。 'IntelliJ IDEA 2017.3'(またはDataGrips))を使用している場合、タイムゾーンを次のように定義する必要があります。
'DB source properties' -> 'Advanced' tab -> 'VM Options': -Duser.timezone=UTC+06:00
それ以外の場合は、他の場所で設定したものに関係なく「UTC」が表示されます。