Timestamp型の集計日sum_dt
に、「毎月1日 00:00:00」の日時を入れて、取得時にYYYY/MM
に変換して使用している処理があるのですが。
SELECT to_char(sum_dt,'YYYY/MM')::TEXT
FROM monthly_data
RDSのスナップショットを復元して別の環境を立ち上げたところ、なぜか取れるデータが1ヶ月ずれることに。
DBeaverで見る分にはデータ問題なさそうなのに・・・。
と思ったら、パラメータグループを指定するのを忘れていて、TimezoneがデフォルトのUTCになっていました。
2020/11/01 00:00:00 +0900
(JST)は
2020/10/31 15:00:00 +0000
(UTC)と同値なので、冒頭のクエリだと1ヶ月の違いになってしまっていました。
DBeaverで見る時はいい感じにJSTに変換してくれていたようです。
日時で出していれば、9時間ずれに気がついて、Timezoneの問題とすぐ気がついたと思うのですが、1ヶ月ずれていると思い込んでいて発見まで1時間かかりましたw。
そもそも時間が必要ないのにTimestamp型のカラムにするのよくないという話。