Как получить разницу между двумя временами в MySQL?
Вопрос
Я пробую это
SELECT DATEDIFF(second,log.start_time,log.end_time)
as seconds
from log
where log.log_id = "some crazy UUID";
Но я получаю ошибку, потому что DATEDIFF()
не принимает форматерат, как второе.
Итак, я попробовал,
SELECT second(DATEDIFF(second,log.start_time,log.end_time))
as seconds
from log
where log.log_id = "some crazy UUID";
Но это не работает для форматирования.
Решение
Я думаю, ты хотел использовать TIMESTAMPDIFF()
вместо DATEDIFF()
:
SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds
from log
where log.log_id = "some crazy UUID";
Другие советы
Попробуй это
SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
FROM log
WHERE log.log_id = "some crazy UUID";
Datediff принимает только два параметра, и вы передаете здесь три параметра.
Как это работает, а также возвращает только разницу, потому что даты не включают время.
http://dev.mysql.com/doc/refman/5.1/en/date-and-come-cunctions.html
DATEDIFF()
Возвращает дни разницы.
Использовать TIMEDIFF()
или преобразовать обе временные метки с TO_SECONDS()
) и получить их разницу:
SELECT TO_SECONDS(log.end_time) - TO_SECONDS(log.start_time) AS seconds
FROM log
WHERE log.log_id = "some crazy UUID"
;
Датиф :
От MSDN, он возвращает подсчет (подписанный целое число) указанных границ даты, пересекаемых между указанным стартадом и конечным. А DATEDIFF()
Функция возвращает время между двумя датами. Синтаксис:
DATEDIFF ( datepart , startdate , enddate )
Вы должны использовать TIMEDIFF()
или же TIMESTAMPDIFF()
функция
Просто заменить TIMESTAMPDIFF()
функционировать с DATEFDIFF()