2011-03-16 72 views
2

我想这如何获得MYSQL中两个日期时间的区别?

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

但是,这并不格式化工作之一。

+2

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff – 2011-03-16 15:57:12

回答

6

我想你想用TIMESTAMPDIFF(),而不是DATEDIFF()

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

+1更换TIMESTAMPDIFF()功能只用一个函数调用。 – 2011-03-16 16:05:27

+0

这就是我使用它的原因。很好的回答,谢谢。 – davidahines 2011-03-16 16:14:23

3

尝试差异的这个

SELECT TIME_TO_SEC(TIMEDIFF(log.start_time, log.end_time)) AS seconds 
FROM log 
WHERE log.log_id = "some crazy UUID"; 
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" 
; 
1

DATEDIFF

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

DATEDIFF (datepart , startdate , enddate) 

您应该使用TIMEDIFF()TIMESTAMPDIFF()功能。
只是DATEFDIFF()

相关问题