Azure Database for PostgreSQLにてタイムゾーンを変える

今日も小ネタ。Azure Database for PostgreSQLについて。

以前、Azure Database for MySQLタイムゾーンを変える方法について記事を書きました。今回はPostgreSQL版です。

miyohide.hatenablog.com

前提

Azure Database for PostgreSQLは複数のPostgreSQLのバージョンを選択できます。

docs.microsoft.com

また、使用する段階でどんどんバージョンが変わります。今回使用したPostgreSQLのバージョンは11.6を使用しました。

デフォルトの動作

例えば次のようなテーブルを作成しておきます。

create table table1 (
    id serial primary key,
    description varchar(20) not null,
    ts timestamp not null
)

このテーブルのtsカラムに次のようなSQLでCURRENT_TIMESTAMPで値をinsertすると、デフォルトではUTCで日時がINSERTされます。

insert into table1  (description, ts) values ('before change', CURRENT_TIMESTAMP)

f:id:miyohide:20200816173245p:plain

この仕様は「困る。日本時間にしてくれ」という話を聞くので、この対処方法を。

サーバーパラメータの変更

MySQLのときと同じように、PostgreSQLもサーバーパラメータを変更できます。

docs.microsoft.com

日本時間に変更するには、timezoneパラメータをAsia/Tokyoに変更します。

f:id:miyohide:20200816173608p:plain

設定した値は保存後有効になります。変更後に次のSQL文を実行して、再度select文を発行します。

insert into table1  (description, ts) values ('after change', CURRENT_TIMESTAMP)

f:id:miyohide:20200816173827p:plain

MySQLとは異なり、変更前のデータが日本時間に変わるわけではなく変更後のデータのみが日本時間に変わってました。