2011-03-16 99 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()

相關問題