如何在MYSQL中获取两个日期时间之间的差异?

时间:2011-03-16 15:54:42

标签: mysql datetime time datediff

我正在尝试这个

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

但是我收到错误,因为DATEDIFF()不接受像second这样的格式化程序expr。

所以我试过了,

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

但这对格式化也不起作用。

5 个答案:

答案 0 :(得分:6)

我认为您打算使用TIMESTAMPDIFF()代替DATEDIFF()

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

答案 1 :(得分:3)

试试这个

SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
FROM log 
WHERE log.log_id = "some crazy UUID";

答案 2 :(得分:2)

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"
;

答案 3 :(得分:2)

DATEDIFF只接受两个参数,你在这里传递三个参数。

它是如何工作的,它也只返回不同时间的差异日期。

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

答案 4 :(得分:1)

DATEDIFF

msdn开始,它返回指定的startdate和enddate之间交叉的指定日期部分边界的计数(有符号整数)。 DATEDIFF()函数返回两个日期之间的时间。 语法:

DATEDIFF ( datepart , startdate , enddate )  

您应该使用TIMEDIFF()TIMESTAMPDIFF()功能 只需将TIMESTAMPDIFF()函数替换为DATEFDIFF()

即可