Как получить разницу между двумя временами в MySQL?

StackOverflow https://stackoverflow.com/questions/5327959

  •  26-10-2019
  •  | 
  •  

Вопрос

Я пробую это

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()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top