メインコンテンツまでスキップ
に最終更新

DATEDIFF

説明​

DATEDIFF 関数は、二つの日付または日時の差を日単位で計算します。expr2 を expr1 から引いた日数を返します。時刻部分の時、分、秒は無視し、日付部分のみを比較します。

この関数の動作は、MySQL の datediff 関数 と同じです。

構文​

DATEDIFF(<expr1>, <expr2>)

パラメータ​

パラメータ説明
<expr1>引かれる側の日付。datetime 型または date 型に対応します。日時と日付の形式については、日時の変換と日付の変換を参照してください。
<expr2>引く側の日付。date 型または datetime 型に対応します。

戻り値​

expr1 - expr2 の値を日単位の INT 型で返します。

特記事項:

  • expr1 が expr2 より後の日付なら正の数、それ以外は負の数を返します。
  • いずれかのパラメータが NULL の場合は NULL を返します。
  • 時刻部分は無視します。

使用例​

-- The two dates differ by 1 day (ignoring the time part)
select datediff(CAST('2007-12-31 23:59:59' AS DATETIME), CAST('2007-12-30' AS DATETIME));
+-----------------------------------------------------------------------------------+
| datediff(CAST('2007-12-31 23:59:59' AS DATETIME), CAST('2007-12-30' AS DATETIME)) |
+-----------------------------------------------------------------------------------+
| 1 |
+-----------------------------------------------------------------------------------+

-- The first date is earlier than the second date, returning a negative number
select datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31' AS DATETIME));
+-----------------------------------------------------------------------------------+
| datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31' AS DATETIME)) |
+-----------------------------------------------------------------------------------+
| -31 |
+-----------------------------------------------------------------------------------+

-- Any parameter is NULL
mysql> select datediff('2023-01-01', NULL);
+------------------------------+
| datediff('2023-01-01', NULL) |
+------------------------------+
| NULL |
+------------------------------+

-- If input datetime type, will ignore time part
select datediff('2023-01-02 13:00:00', '2023-01-01 12:00:00');
+--------------------------------------------------------+
| datediff('2023-01-02 13:00:00', '2023-01-01 12:00:00') |
+--------------------------------------------------------+
| 1 |
+--------------------------------------------------------+

select datediff('2023-01-02 12:00:00', '2023-01-01 13:00:00');
+--------------------------------------------------------+
| datediff('2023-01-02 12:00:00', '2023-01-01 13:00:00') |
+--------------------------------------------------------+
| 1 |
+--------------------------------------------------------+
1 row in set (0.01 sec)