はじめに
DBからSELECTしてきた値をタイムゾーン補正を行い、指定したフォーマットで日付と時刻を変換する機会があったので、その方法をまとめておこうと思います。
PostgreSQLでは動作確認済みですが、他のDBでは確認していないのでその点よろしくお願いします。
9時間マイナスする場合
sample.sql
SELECT TO_CHAR(your_column_name::timestamp - INTERVAL '9 hours', 'YYYY-MM-DD"T"HH24:MI:SS') AS adjusted_date
FROM your_table_name;
9時間プラスする場合
sample.sql
SELECT TO_CHAR(your_column_name::timestamp + INTERVAL '9 hours', 'YYYY-MM-DD"T"HH24:MI:SS') AS adjusted_date
FROM your_table_name;
解説
- your_column_name::timestamp
値をtimestamp型に変換
- - INTERVAL '9 hours'
取得したタイムスタンプから9時間マイナスする
UTCから JSTへ変換したいときは、9時間プラスしてあげれば良いです。