27

psqlのタイムゾーンをデフォルト(米国/中央)以外に設定するにはどうすればよいですか?これが私がこれまでに試したことです:

$ 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

4 に答える 4

28
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"
于 2012-08-02T14:20:04.063 に答える
21
ALTER USER postgres SET timezone='Asia/Tokyo' ;
于 2016-05-20T06:19:22.427 に答える
20

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.

したがって、psql内でSETコマンドを使用するか、PGTZ環境変数を設定する必要があるようです。

PGTZ=PST8PDT psql -c 'show timezone'

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

于 2012-08-02T14:29:31.973 に答える
0

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

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

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

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

于 2018-01-09T18:53:22.423 に答える