created: 2019-08-24T07:00:57.000Z

athena(presto)で、dateとtimeからJSTを得る

CloudFrontのログファイルをathenaでテーブルにすると、dateカラムとtimeカラムで別カラムになっている

この2つのカラムからdatetime (JST) のカラムを作りたい

こんな感じでできる

この辺を組み合わせる

  • date_format
  • from_iso8601_timestamp
  • AT TIME ZONE 'Asia/Tokyo'

文字列結合でiso8601フォーマットを作っている

  • eg: 2019-08-21T18:04:04Z
WITH t AS (
  SELECT
    cdn_access_log.*,
    from_iso8601_timestamp(date_format(date, '%Y-%m-%dT') || time || 'Z') AT TIME ZONE 'Asia/Tokyo' jst_datetime
  FROM
    myproj.cdn_access_log
)
SELECT
  date,
  time,
  jst_datetime
FROM
  t
LIMIT
  3
date time jst_datetime
2019-08-21 9:04:04 2019-08-21 18:04:04.000 Asia/Tokyo
2019-08-21 9:04:01 2019-08-21 18:04:01.000 Asia/Tokyo
2019-08-21 9:04:05 2019-08-21 18:04:05.000 Asia/Tokyo

参考

詳説 データベース ―ストレージエンジンと分散データシステムの仕組み
[ad] 詳説 データベース ―ストレージエンジンと分散データシステムの仕組み
Alex Petrov, 小林 隆浩 (単行本(ソフトカバー))