Если вы хотите получить разницу между двумя значениями DATETIME, используйте TIMESTAMPDIFF
:
TIMESTAMPDIFF (единица, datetime_expr1, datetime_expr2)
Возвращает datetime_expr2 – datetime_expr1
, где datetime_expr1
и datetime_expr2
- выражения даты или даты и времени. Одно выражение может быть датой, а другое датой-временем; значение даты рассматривается как дата-время, имеющее, где необходимо, часть времени «00: 00: 00». Единица для результата (целое число) задается аргументом единицы. Допустимые значения единицы измерения такие же, как в описании функции TIMESTAMPADD()
.
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885
unit
также может быть HOUR
, что вы и просили в одном из комментариев.
Аргумент unit может быть любым из следующих:
- МИКРОСЕКОНД
- ВТОРОЙ
- МИНУТА
- ЧАС
- ДЕНЬ
- НЕДЕЛЯ
- МЕСЯЦ
- КВАРТАЛ
- год
Уровень полезности некоторых других опций будет, конечно, определяться гранулярностью данных. Например, «MICROSECOND» будет иметь ограниченное использование, только если вы не сохраняете микросекунды в своих значениях DATETIME.