TIMEDIFF
не может иметь более 839 часов, и, следовательно, вы не сможете измерить разницу для более длинных диапазонов, чем ~ 35 дней.В этом случае вы можете сделать следующее:
- Используйте
TIMESTAMPDIFF
, чтобы получить секунды - Преобразовать секунды в
hh:m:ss
Например
SET @seconds := (SELECT TIMESTAMPDIFF(second, '2018-06-18 08:20:00','2019-01-25 14:29:00'));
SELECT CONCAT(FLOOR(@seconds/3600),':',FLOOR((@seconds%3600)/60),':',(@seconds%3600)%60) AS difference;
Если вы хотите выполнить оба в одном запросе, вы можете использовать следующее:
SELECT CONCAT(FLOOR(TIMESTAMPDIFF(second, '2018-06-18 08:20:00','2019-01-25 14:29:00')/3600),
':',FLOOR((TIMESTAMPDIFF(second, '2018-06-18 08:20:00','2019-01-25 14:29:00')%3600)/60),
':',(TIMESTAMPDIFF(second, '2018-06-18 08:20:00','2019-01-25 14:29:00')%3600)%60)
AS difference;
Вот SQLFiddle1 и SQLFiddle2 .