Например, как вычислить интервал между этими двумя датами:
2009-09-18 00:00:00
2009-10-17 00:00:00
ИЗМЕНИТЬ
Я хочу получить интервал в формате year-month-day hour: min: seconds
Например, как вычислить интервал между этими двумя датами:
2009-09-18 00:00:00
2009-10-17 00:00:00
ИЗМЕНИТЬ
Я хочу получить интервал в формате year-month-day hour: min: seconds
Как насчет использования 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 являются выражениями даты или даты и времени.
Только части даты являются значениями используемых при расчете.
Вы можете просто вычесть datetimes, и он вернет значение:
select (now() - интервал 2 дня) - (теперь() - интервал 5 дней);
Результат не является datetime (это некоторая десятичная кодированная дата - 3000000 в течение трех дней в этом случае), но неверно говорить о дате и времени как одном и том же типе данных.
Или используйте timestampdiff() следующим образом:
timestampdiff (микросекунды, yourtime, теперь())
первым параметром является единица измерения mysql datetime, может быть "microsecond, second, minute, hour, day, year", и эта функция означает третий параметр datetime минус 2-й параметр 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)