当サイトにはアフィリエイト広告が含まれます。なおレビューは私の感想を書いており、内容を指示するご依頼はお断りしています

Redshiftで、日本時間の今日の日付(current_date)を取得する方法

毎朝6時に実行されるクエリがある。

しかし、そのクエリで実行されるcurrrent_dateがUTCの日付になって、1日ずれてしまう( ˊᵕˋ ;)

どうにか日本時間のcurrent_dateが取得できないか……

結論

select trunc(convert_timezone('Japan', getdate()))

を使えば、日本時間の今日の日付が取得できる(๑´ω`๑)/

詳細

select current_date

datetime.date(2023, 2, 15)
UTCの日付になってしまう(>︿<。)

select current_timestamp

datetime.datetime(2023, 2, 15, 21, 0, 33, 273305, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))
UTCだが時刻も取得できるので、編集できそう

select getdate()

datetime.datetime(2023, 2, 15, 21, 0, 33)
UTCだが時刻も取得できるので、編集できそう

select convert_timezone('Japan', getdate())

datetime.datetime(2023, 2, 16, 6, 0, 33)
UTCを日本時間に変換できた(๑´ω`๑)/

select trunc(convert_timezone('Japan', getdate()))

datetime.date(2023, 2, 16)
日本時間の今日の日付が取得できた!

select convert_timezone('Japan', current_timestamp)

SQLエラー [42883]: ERROR: function convert_timezone("unknown", timestamp with time zone) does not exist ヒント: No function matches the given name and argument types. You may need to add explicit type casts.

current_timestampは変換できないらしい( ˊᵕˋ ;)