SQL エディタでクエリを入力するとき または計算を作成するとき 、Presto SQL 構文 を使用します。日付やタイムスタンプの値を調整したり計算したりするには、以下の一般的な関数が便利です。
注:日付と時刻の変換に使われるような、Chain のランタイム変数は、Presto SQL ではなく Python strftime を使います。
タイムゾーン
タイムスタンプのタイムゾーン を変換するには、AT TIME ZONE
演算子を使用する。例:
SELECT cast(timestamp '2020-10-31 01:00 UTC' as VARCHAR) 2020-10-31 01:00:00.000 UTC SELECT cast(timestamp '2020-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles' as VARCHAR) 2020-10-30 18:00:00.000 America/Los_Angeles
ヒント: ほとんどの地域では、太平洋タイムゾーンにはAmerica/Los_Angeles
を、山岳タイムゾーンにはAmerica/Denver
を、中部タイムゾーンにはAmerica/Chicago
を、東部タイムゾーンにはAmerica/New_York
を使用できます。
CURRENT_DATE
クエリー実行時の日付を返すには、CURRENT_DATE
関数を使用します。例えば、SELECT CURRENT_DATE()
。
日付
値を日付値に変換するには、DATE
関数を DATE(value) として使用する。
DATE_ADD
日付やタイムスタンプに区間単位の値を追加するには、DATE_ADD
関数を DATE_ADD(unit,value,timestamp) として使用します。ユニット用,DATE_ADD
対応:
ミリ秒
セカンド
微細
時
日
週間
月
クォーター
年
例えば、SELECT DATE_ADD('day', 10, "2020-06-15")
は、2020-06-25 を返す。
注: IS08601フォーマットの文字列を日付値としてパースするには、FROM_ISO8601_DATE
関数を使用する。例えば、FROM_ISO8601_DATE('2020-06-15')
。
DATE_DIFF
2つの日付またはタイムスタンプ値の差を返すには、DATE_DIFF
関数を DATE_DIFF(unit,timestamp1,timestamp2) として使用します。ユニット 、DATE_DIFF
は、DATE_ADD
と同じ値をサポートしている。例えば、SELECT DATE_DIFF('day', "2020-06-15", "2020-06-25")
は10 を返す。
DATE_DIFF
はDateオブジェクトにのみ適用されるので、この関数を動作させるために他のオブジェクトをキャストする必要があるかもしれないことに注意してください。
注: IS08601フォーマットの文字列を日付値としてパースするには、FROM_ISO8601_DATE
関数を使用する。例えば、FROM_ISO8601_DATE('2020-06-15')
。
日付形式
設定されたフォーマットで日付またはタイムスタンプ値を返すには、DATE_FORMAT
関数を DATE_FORMAT(timestamp,format) として使用します。フォーマット 、DATE_FORMAT
では、これらの値の組み合わせをサポートしている:
書式 | 説明 |
---|---|
%a |
Sun からSat までの曜日の略称。 |
%b |
Jan からDec までの略称。 |
%c |
1 から12 までの数値。 |
%d |
01 から31 までの2桁の数字による月日。 |
%e |
1 から31 までの数値。 |
%f |
ミリ秒、000000 から999000 印刷用;0 から9999999 解析用 |
%H |
24時間時計の時間を2桁の数字で表し、00 から23 まで。 |
h または%I |
00 から12 まで、2 桁の数字として 12 時間時計の時間を示す。 |
%i |
分、00 から59 まで |
%j |
000 から366 までの3桁の数字による年号。 |
%k |
24 時間時計の時、0 から23 まで |
%l |
0 から12 まで、12 時間時計の時間。 |
%M |
月名、1月 から12月まで |
%m |
01 から12 までの2桁の数値。 |
%p |
AM またはPM of 12-hour clock |
%r |
hh:mm:ss の後にAM またはPM が続く。 |
%s または%S |
次に、00 から59 まで。 |
%T |
24時間時計の時刻(hh:mm:ss |
%v |
01 から53 まで。月曜日が週の初日。%x と共に使用。 |
%W |
曜日名日曜日 から土曜日まで |
%x |
月曜日が週の初めの日である場合の年。%v と共に使用。 |
%Y |
年(4桁の数字 |
%y |
Year, as two-digit number Note: パースするとき、 |
%% |
リテラル% 文字 |
注: 1
から7
までの曜日を数字で返すには、DAY_OF_WEEK
関数を使用する。
日
日付やタイムスタンプから、1 から 31 までの数字で月の日を返すには、DAY
関数を DAY(date_value) として使用します。例えば、SELECT DAY("2020-06-15")
は15 を返す。
曜日
日付またはタイムスタンプから曜日を返すには、
DAY_OF_WEEK
関数を DAY_OF_WEEK(date_value) として使用します。
イーモンス
日付やタイムスタンプから月の最終日の数字を返すには、EOMONTH(date_value, month_number_value) のように、EOMONTH
関数を使用する。
from_iso8601_日付
ISO8601フォーマットの文字列を日付としてパースするには、FROM_ISO8601_DATE(date_value) のように、
関数を使用します。
インターバル
日付またはタイムスタンプのインターバル単位値を加算または減算するには、INTERVAL
関数と、+
または-
演算子(+/- INTERVAL値 単位 など)を使用します。単位 、INTERVAL
は、DATE_ADD
と同じ値をサポートしている。例:
-
DATE '2020-08-08' + INTERVAL '2' day
returns2020-08-10. -
TIMESTAMP '2020-08-08 01:00' + INTERVAL '29' hour
returns2020-08-09 06:00:00.000. -
INTERVAL '2' day + INTERVAL '3' hour
returns2 03:00:00.000. -
TIMESTAMP '2020-10-31 01:00' - INTERVAL '1' month
returns2020-09-30 01:00:00.000.
月
日付やタイムスタンプから月を1から12までの数値で返すには、MONTH
関数をMONTH(date_value)として使用します。例えば、SELECT MONTH("2020-06-15")
は、6 を返す。
最新情報|NOW
クエリー実行時のタイムスタンプを返すには、NOW
関数を使用します。例えば、SELECT NOW()
。
四半期
日付またはタイムスタンプから、その年の四半期を1から4までの数字で返すには、QUARTER
関数を QUARTER(date_value) として使用します。例えば、SELECT QUARTER("2020-06-15")
は、2 を返す。
年
日付やタイムスタンプから1000から9990までの数値として年を返すには、YEAR
関数をYEAR(date_value)として使用します。例えば、SELECT YEAR("2020-06-15")
は2020 を返す。