Presto日付・時間処理関数の紹介
Prestoの日付・時間処理関数についてご紹介します。

Presto日付・時間処理の注意事項
Prestoのdate型にはいくつかの型が存在しており、加算・減算する場合には注意が必要です。
簡単な加算・減算の処理方法については下記に記載させていただきます。
加算: date '2012-08-08' + interval '2' day
→ 2012-08-08
減算: date '2012-08-08' - interval '2' day
→ 2012-08-06
dateの他にもtime型、timestamp型でも同様にinterval
を利用することで、計算が可能になります。
日付・時間処理関数一覧
凡例
下記一覧で利用している変数などをここに記載します。
変数一覧
str
・・・ 文字列が入っているカラムorは固定文字列timestamp
・・・ タイムスタンプunit
・・・ 下記一覧を参照format
・・・ 下記を参照
unit一覧
単位(Unit) | 説明 |
millisecond | ミリ秒数 |
second | 秒数 |
minute | 分 |
hour | 時 |
day | 日数 |
week | 週単位(1〜53) |
month | 月(1~12) |
quarter | 四半期換算(1~4) 1〜3月:1 4〜6月:2 7〜9月:3 10〜12月:4 |
year | 年(西暦) |
format一覧
下記URLを参照してください
https://prestodb.io/docs/0.172/functions/datetime.html
関数一覧
No | 関数 | 説明 |
1 | now() | クエリ処理開始時のタイムゾーンを 含むtimestampを返却します。 処理はcurrent_timestampと同様(エイリアス) |
2 | current_date | クエリ処理開始時のdate(日付)を 返却します。 返却値:YYYY-MM-DD |
3 | current_time | クエリ処理開始時の時間を 返却します。 返却例:12:25:20.962 UTC |
4 | current_timezone | タイムゾーンを返却します。 返却例:UTC |
5 | from_iso8601_date(str) | iso8601型の文字列をdate型に変換して返却します。 例:from_iso8601_date(‘2020-02-02’) 返却例:2020-02-02 |
6 | from_iso8601_ timestamp(str) | iso8601型の文字列をtimestamp型に 変換して返却します。 例:from_iso8601_timestamp( ‘2020-02-02T12:00’) 返却例:2020-02-02 12:00:00.000 UTC |
7 | to_iso8601(timestamp) | timestamp型をiso8601の形式に 変換して返却します。 例:to_iso8601(now()) 返却例:2020-02-03 12:36 |
8 | date_add(unit, int,timestamp) | tampstampへunit引数の単位で 加算をします。加算する数値はintで 指定します。 例:date_add(‘day’, 1, now()) 返却例:2020-02-04 12:11:55.057 UTC |
9 | date_diff(unit, timestamp1,timestamp2) | timestamp1とtimestamp2を unit引数の単位で差分を 返却します。 例:date_diff(‘day’, now(), date_add(‘day’, 3, now())) 返却例:int型 3 |
10 | date_truck(unit, timestamp) | timestampの切り捨てをunitの 単位で行います。 (unit) 切り捨ての例 second ・・・2001-08-22 03:04:05.000 minute ・・・2001-08-22 03:04:00.000 hour ・・・2001-08-22 03:00:00.000 day ・・・2001-08-22 00:00:00.000 week ・・・2001-08-20 00:00:00.000 month ・・・2001-08-01 00:00:00.000 quarter・・・2001-07-01 00:00:00.000 year ・・・2001-01-01 00:00:00.000 |
11 | date_format( timestamp,format) | timestampの切り出しをformatの単位で行います。 |
12 | second(timestamp) | timestampから”秒数”を切り出し返却をします。 |
13 | minute(timestamp) | timestampから”分”を切り出し返却をします。 |
14 | hour(timestamp) | timestampから”時間”を切り出し返却をします。 |
15 | day(timestamp) | timestampから”日数(1~31)”を切り出し返却をします。 |
16 | week(timestamp) | timestampから”週(1~53)”を切り出し返却をします。 |
17 | day_of_week(timestamp) | timestampから”曜日”を切り出し 返却をします。 1(月曜)〜7(日曜) |
18 | day_of_year(timestamp) | timestampから”日数(1~366)”を 切り出し返却をします。 |
19 | month(timestamp) | timestampから”月(1~12)”を 切り出し返却をします。 |
20 | quarter(timestamp) | timestampから”四半期”を切り出し 返却をします。 1〜3月:1 4〜6月:2 7〜9月:3 10〜12月:4 |
21 | year(timestamp) | timestampから”年(西暦)”を切り出し 返却をします。 |
備考
データ分析をする上で欠かせない関数ばかりのため、個人的にはかなり多用してます。
参照元
https://prestodb.io/docs/0.172/functions/datetime.html