Как я могу получить разницу между двумя datetime в MYSQL? - PullRequest
2 голосов
/ 16 марта 2011

Я пытаюсь это

SELECT DATEDIFF(second,log.start_time,log.end_time) 
as seconds 
from log 
where log.log_id = "some crazy UUID";

но я получаю ошибку, потому что DATEDIFF() не принимает expr форматера, как секунда.

Итак, я попробовал,

SELECT second(DATEDIFF(second,log.start_time,log.end_time)) 
as seconds 
from log
where log.log_id = "some crazy UUID";

Но для форматирования это тоже не работает.

Ответы [ 5 ]

6 голосов
/ 16 марта 2011

Я думаю, вы хотели использовать TIMESTAMPDIFF() вместо DATEDIFF():

SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds 
from log 
where log.log_id = "some crazy UUID";
3 голосов
/ 16 марта 2011

Попробуйте это

SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
FROM log 
WHERE log.log_id = "some crazy UUID";
2 голосов
/ 16 марта 2011

DATEDIFF принимает только два параметра, а вы передаете три параметра здесь.

Как это работает, а также возвращает только разницу ч / б, не считая времени.

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

2 голосов
/ 16 марта 2011

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"
;
1 голос
/ 16 марта 2011

DATEDIFF :

Из msdn он возвращает количество (целое число со знаком) указанных границ даты, пересеченных между указанной начальной датой и конечной датой.Функция DATEDIFF() возвращает время между двумя датами.Синтаксис:

DATEDIFF ( datepart , startdate , enddate )  

Вы должны использовать функцию TIMEDIFF() или TIMESTAMPDIFF().
Просто замените функцию TIMESTAMPDIFF() на DATEFDIFF()

...