Как рассчитать интервал между datetime в MySQL? - PullRequest
10 голосов
/ 22 сентября 2009

Например, как вычислить интервал между этими двумя датами и временем:

2009-09-18 00: 00: 00

2009-10-17 00: 00: 00

EDIT

Я имею в виду получить интервал в формате год-месяц-день, час: мин: секунды

Ответы [ 4 ]

10 голосов
/ 22 сентября 2009

Как насчет использования datediff:

mysql> select abs(datediff('2009-09-18 00:00:00', '2009-10-17 00:00:00'));
+-------------------------------------------------------------+
| abs(datediff('2009-09-18 00:00:00', '2009-10-17 00:00:00')) |
+-------------------------------------------------------------+
|                                                          29 |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

Цитирование руководства:

DATEDIFF() возвращает expr1 – expr2 выражается в виде значения в днях от одного свидание с другим. expr1 и expr2 являются датой или выражением даты и времени.
Только части даты значений используется в расчете.

5 голосов
/ 22 сентября 2009

Вы можете попробовать DATEDIFF или TIMEDIFF

3 голосов
/ 02 сентября 2015

Или используйте timestampdiff () следующим образом:

timestampdiff (микросекунды, yourtime, теперь ())

первый параметр - это единица времени-даты mysql, может быть «микросекунда, секунда, минута, час, день, год», и эта функция означает, что третий параметр datetime минус второй параметр datetime.

mysql> select timestampdiff(second, "2009-09-18 00:00:00", "2009-10-17 00:00:00");
+---------------------------------------------------------------------+
| timestampdiff(second, "2009-09-18 00:00:00", "2009-10-17 00:00:00") |
+---------------------------------------------------------------------+
|                                                             2505600 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
1 голос
/ 22 сентября 2009

Вы можете просто вычесть дату и время, и оно вернет значение:

выберите (сейчас () - интервал 2 дня) - (сейчас () - интервал 5 дней);

Результат не является датой-временем (это некоторая десятичная кодированная дата - в этом случае 3000000 для трех дней), но неверно говорить, что дата и время считаются одним и тем же типом данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...