- カテゴリ:
TIMEDIFF¶
指定された日付または時刻の部分に基づいて、2つの日付、時刻、またはタイムスタンプ式の差を計算します。この関数は、3番目の引数から2番目の引数を減算した結果を返します。
DATEDIFF の代替です。
構文¶
TIMEDIFF( <date_or_time_part> , <date_or_time_expr1> , <date_or time_expr2> )
引数¶
date_or_time_part
時間の単位。 サポートされている日付と時刻の部分 (例:
month
)にリストされている値のいずれかでなければなりません。値は文字列リテラルにすることも、引用符で囲まないようにすることもできます(例:'month'
またはmonth
)。date_or_time_expr1
、date_or_time_expr2
比較する値。日付、時刻、タイムスタンプか、日付、時刻、またはタイムスタンプを評価できる式でなければなりません。値
date_or_time_expr1
がdate_or_time_expr2
から減算されます。
戻り値¶
date_or_time_expr2
と date_or_time_expr1
の単位(秒、日など)の差を表す整数を返します。
使用上の注意¶
出力値は、-12日などの負の値にすることができます。
date_or_time_expr1
およびdate_or_time_expr2
は、日付、時刻、またはタイムスタンプにすることができます。関数は、年、四半期、月、週、日、時間、分、秒、ミリ秒、マイクロ秒、ナノ秒の単位をサポートします。
date_or_time_part
は、 サポートされている日付と時刻の部分 にリストされている値のいずれかでなければなりません。date_or_time_part
がweek
(またはそのバリエーション)である場合、出力は WEEK_START セッションパラメーターによって制御されます。例などの詳細については、 カレンダーの週と平日 をご参照ください。差の計算に使用される単位(例:
month
)は、 DATE、 TIME、または TIMESTAMP フィールドのどの部分が結果の決定に使用されるかを決定し、結果の精度を決定します。小さい単位は使用されないため、値は丸められません。たとえば、2021年1月1日と2021年2月28日の差が、1か月よりも2か月に近い場合でも、次のように1か月が返されます。
DATEDIFF(month, '2021-01-01'::DATE, '2021-02-28'::DATE)
DATE 値の場合:
year
は、年のみを使用し、他のすべての部分を無視します。month
は、月と年を使用します。day
は、日付全体を使用します。
TIME 値の場合:
hour
は、時のみを使用し、他のすべての部分を無視します。minute
は、時と分を使用します。second
は、時、分、秒を使用しますが、小数秒は使用しません。millisecond
は、時、分、秒、および小数秒の最初の3桁を使用します。小数秒は丸められません。たとえば、DATEDIFF(milliseconds, '00:00:00', '00:00:01.1239')
は1.124秒ではなく、1.123秒を返します。microsecond
は、時、分、秒、および小数秒の最初の6桁を使用します。小数秒は丸められません。nanosecond
は、時、分、秒、および小数秒の9桁すべてを使用します。
TIMESTAMP 値の場合:
ルールは、上記の DATE および TIME データ型のルールと一致します。指定された単位以上の単位のみが使用されます。
例¶
これは、2つの日付を減算した結果を示しており、2番目の日付は最初の日付から2年後のものです。
SELECT TIMEDIFF(YEAR, '2017-01-01', '2019-01-01') AS Years; +-------+ | YEARS | |-------| | 2 | +-------+
これは、値が丸められるのではなく切り捨てられることを示しています。差は11か月よりも12か月に近いですが、Snowflakeは差を11か月として計算します。
SELECT TIMEDIFF(MONTH, '2017-01-1', '2017-12-31') AS Months; +--------+ | MONTHS | |--------| | 11 | +--------+
DATEDIFF には追加の例があります。