のんびりSEの議事録

プログラミング系のポストからアプリに関してのポストなどをしていきます。まれにアニメ・マンガなど

Twitterの`created_at`をAthenaのdatetimeに変換する

Twitterのデータを分析用にS3に保存して、AthenaでSQLを投げたりしてるのですが、created_atの形式がAthenaでのdateに対応した形式では無いので、それをフォーマット出来るSQLを考えました。

Prestodb

AthenaではPrestodbを利用しているようです。
よって、Prestodbのドキュメントから、日付フォーマットに関する情報を見つけました。

6.12. Date and Time Functions and Operators — Presto 0.191 Documentation

parse_datetime(string, format) → timestamp with time zone

parse_datetimeはJodaTimeとの互換性があるとのことで、DateTimeFormatから対応するパターンを探す。

DateTimeFormat (Joda time 2.2 API)

SQL

SELECT parse_datetime('Tue Dec 05 11:01:38 +0000 2017', 'EEE MMM dd HH:mm:ss Z YYYY') AT TIME ZONE 'Asia/Tokyo'

上記のようなフォーマットで変換する事ができました。 Twittercreated_atではUTCのため、日本時間に変換する為に、 AT TIME ZONE も合わせて利用しています。

プログラミングで変換する方法

以下のように、プログラミングで変換する方法も有るようなので、合わせて紹介します。