RedshiftでUNIX時間をtimestamp型に変換する

作成
2020-06-09

やり方

Redshiftでこのような形でUNIX秒のカラムがあったら、次のようにしてタイムスタンプ型に変換します。

created_at
1586271600
1591607652
1591542000
1593529199
1609426799

UNIX秒をタイムスタンプ型に変換するSQL

select
created_at
,convert_timezone('jst', timestamp 'epoch' + cast(created_at as bigint) * interval '1 second') as formatted_created_at
from table_name

出力結果

created_at formatted_created_at
1586271600 2020-04-08 00:00:00
1591607652 2020-06-08 18:14:12
1591542000 2020-06-08 00:00:00
1593529199 2020-06-30 23:59:59
1609426799 2020-12-31 23:59:59

補足

UNIX時間にはマイクロ秒で記載していることもあります。 その場合は1000で割ります。

select
convert_timezone('jst', created_at
,timestamp 'epoch' + cast(created_at as bigint) / 1000 * interval '1 second') as formatted_created_at
from table_name

参考