メインコンテンツまでスキップ
バージョン: Latest-3.4

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)

パラメータ

  • expr1expr2: 比較したい2つの datetime 値。必須です。サポートされているデータ型は DATETIME と DATE です。

  • unit: 時間差を表現するための単位。必須です。サポートされている unit の値は、year, quarter, month, week, day, hour, minute, second, millisecond です。

戻り値

BIGINT 値を返します。

使用上の注意

  • expr1expr2 よりも前の場合、負の値が返されます。
  • 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 |
+------------------------------------------------------------------------+

参考

datediff