今日も小ネタ。Azure Database for PostgreSQLについて。
以前、Azure Database for MySQLでタイムゾーンを変える方法について記事を書きました。今回はPostgreSQL版です。
前提
Azure Database for PostgreSQLは複数のPostgreSQLのバージョンを選択できます。
また、使用する段階でどんどんバージョンが変わります。今回使用した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)
この仕様は「困る。日本時間にしてくれ」という話を聞くので、この対処方法を。
サーバーパラメータの変更
MySQLのときと同じように、PostgreSQLもサーバーパラメータを変更できます。
日本時間に変更するには、timezone
パラメータをAsia/Tokyo
に変更します。
設定した値は保存後有効になります。変更後に次のSQL文を実行して、再度select文を発行します。
insert into table1 (description, ts) values ('after change', CURRENT_TIMESTAMP)
MySQLとは異なり、変更前のデータが日本時間に変わるわけではなく変更後のデータのみが日本時間に変わってました。