カテゴリ:

日付と時刻の関数

TIMEDIFF

指定された日付または時刻の部分に基づいて、2つの日付、時刻、またはタイムスタンプ式の差を計算します。この関数は、3番目の引数から2番目の引数を減算した結果を返します。

DATEDIFF の代替です。

構文

TIMEDIFF( <date_or_time_part> , <date_or_time_expr1> , <date_or time_expr2> )
Copy

引数

date_or_time_part

時間の単位。 サポートされている日付と時刻の部分 (例: month)にリストされている値のいずれかでなければなりません。値は文字列リテラルにすることも、引用符で囲まないようにすることもできます(例: 'month' または month)。

date_or_time_expr1date_or_time_expr2

比較する値。日付、時刻、タイムスタンプか、日付、時刻、またはタイムスタンプを評価できる式でなければなりません。値 date_or_time_expr1date_or_time_expr2 から減算されます。

戻り値

date_or_time_expr2date_or_time_expr1 の単位(秒、日など)の差を表す整数を返します。

使用上の注意

  • 出力値は、-12日などの負の値にすることができます。

  • date_or_time_expr1 および date_or_time_expr2 は、日付、時刻、またはタイムスタンプにすることができます。

  • 関数は、年、四半期、月、週、日、時間、分、秒、ミリ秒、マイクロ秒、ナノ秒の単位をサポートします。

  • date_or_time_part は、 サポートされている日付と時刻の部分 にリストされている値のいずれかでなければなりません。

    date_or_time_partweek (またはそのバリエーション)である場合、出力は 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)
    
    Copy

    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 |
+-------+
Copy

これは、値が丸められるのではなく切り捨てられることを示しています。差は11か月よりも12か月に近いですが、Snowflakeは差を11か月として計算します。

SELECT TIMEDIFF(MONTH, '2017-01-1', '2017-12-31') AS Months;
+--------+
| MONTHS |
|--------|
|     11 |
+--------+
Copy

DATEDIFF には追加の例があります。