PostgreSQLでタイムゾーンを考慮して日付操作を行う
PostgreSQL
でdate_trunc
関数を利用して日付時刻の切り捨てを行ったあと、指定のタイムゾーンに準拠した時刻で取得したい。
このような場合は、date_trunc
関数の第3引数にタイムゾーンを指定すれば良い。
-- 結果を東京のタイムゾーンとして取得
select date_trunc('day', now(), 'Asia/Tokyo');
以下のような記述では実現できないので注意。
-- うまくいかないパターン
select date_trunc('day', now() at time zone 'Asia/Tokyo');
select date_trunc('day', now()) at time zone 'Asia/Tokyo';
select date_trunc('day', now() at time zone '+9:00');
select date_trunc('day', now()) at time zone '+9:00';