date_diff
指定された単位で2つの日付値の差を返します。この関数は、expr1 - expr2
の値を unit
の単位で表現して返します。
例えば、date_diff('second', '2010-11-30 23:59:59', '2010-11-30 20:58:59')
は、2つの DATETIME 値の差を秒単位で返します。
この関数は v3.1 からサポートされています。
date_diff と datediff の違いは、datediff() が unit
パラメータをサポートしていない点です。
構文
BIGINT DATE_DIFF(VARCHAR unit, DATETIME expr1, DATETIME expr2)
パラメータ
-
expr1
とexpr2
: 比較したい2つの datetime 値。必須です。サポートされているデータ型は DATETIME と DATE です。 -
unit
: 時間差を表現するための単位。必須です。サポートされているunit
の値は、year, quarter, month, week, day, hour, minute, second, millisecond です。
戻り値
BIGINT 値を返します。
使用上の注意
expr1
がexpr2
よりも前の場合、負の値が返されます。unit
が無効な場合、エラーが返されます。- 入力値が NULL の場合、NULL が返されます。
- 指定された日付が存在しない場合、例えば
2022-11-31
、NULL が返されます。
例
mysql> select date_diff('second', '2010-11-30 23:59:59', '2010-11-30 20:58:59');
+-------------------------------------------------------------------+
| date_diff('second', '2010-11-30 23:59:59', '2010-11-30 20:58:59') |
+-------------------------------------------------------------------+
| 10860 |
+-------------------------------------------------------------------+
mysql> select date_diff('minute', '2010-11-30 23:59:59', '2010-11-30 20:58:59');
+-------------------------------------------------------------------+
| date_diff('minute', '2010-11-30 23:59:59', '2010-11-30 20:58:59') |
+-------------------------------------------------------------------+
| 181 |
+-------------------------------------------------------------------+
mysql> select date_diff('hour', '2010-11-30 23:59:59', '2010-11-30 20:58:59');
+-----------------------------------------------------------------+
| date_diff('hour', '2010-11-30 23:59:59', '2010-11-30 20:58:59') |
+-----------------------------------------------------------------+
| 3 |
+-----------------------------------------------------------------+
mysql> select date_diff('millisecond', '2010-11-30 23:59:59', '2010-11-30 20:58:59');
+------------------------------------------------------------------------+
| date_diff('millisecond', '2010-11-30 23:59:59', '2010-11-30 20:58:59') |
+------------------------------------------------------------------------+
| 10860000 |
+------------------------------------------------------------------------+