Перейти к основному содержимому

date_diff

Описание

Возвращает разность между двумя значениями дат в указанной единице измерения. Эта функция возвращает значение expr1 - expr2, выраженное в единицах unit.

Например, date_diff('second', '2010-11-30 23:59:59', '2010-11-30 20:58:59') возвращает разность между двумя значениями DATETIME в единицах секунд.

Эта функция поддерживается начиная с версии 1.5.0.

Разница между date_diff и datediff заключается в том, что datediff() не поддерживает параметр unit.

Синтаксис

BIGINT DATE_DIFF(VARCHAR unit, DATETIME expr1, DATETIME expr2)

Параметры

  • expr1 и expr2: два значения 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 |
+------------------------------------------------------------------------+

Ссылки

datediff