2011-03-11 86 views
9

這是我的查詢:MySQL的轉換timeDiff測量輸出到日,時,分,秒格式

SELECT TIMEDIFF(end_time,start_time) AS "total" FROM `metrics`; 

這給了我:

116:12:10 

意思116小時,12分10秒。

相反,我希望它說4天20小時12分鐘等

+0

我不知道是否有針對與否,我認爲它可以通過應用簡單的數學做... – 2011-03-11 23:00:13

回答

22
SELECT CONCAT(
FLOOR(HOUR(TIMEDIFF('2010-01-06 08:46', '2010-01-01 12:30'))/24), ' days ', 
MOD(HOUR(TIMEDIFF('2010-01-06 08:46', '2010-01-01 12:30')), 24), ' hours ', 
MINUTE(TIMEDIFF('2010-01-06 08:46', '2010-01-01 12:30')), ' minutes') 

使用您END_TIME和START_TIME爲固定datetime值在我的例子

按照下面的兩點意見,此解決方案僅適用於35天內的日期差異。如果您知道開始和結束之間的時間超過35天,即一個月內的差異,請不要使用它。這裏使用TIMESTAMPDIFF的其他答案將起作用。

+4

@richard任何內置的功能:您的查詢就會失敗長期差異dates.read此http ://www.microshell.com/database/mysql/getting-around-mysql-timediff-maximum-value-of-8385959/ – Gowri 2011-07-04 13:41:48

+0

此函數將失敗,並帶有以下輸入:SELECT CONCAT( FLOOR(HOUR(TIMEDIFF('2010 '2010-03-06 08:46','2010-01-01 12:30')'/ '),24),'hours', MINUTE(TIMEDIFF('2010-03-06 08:46','2010-01-01 12:30')),'minutes') – nono 2017-05-05 17:57:34

12
SELECT 
CONCAT(
TIMESTAMPDIFF(day,'2001-01-01 00:00:00','2001-01-02 23:10:00') , ' dagen ', 
MOD(TIMESTAMPDIFF(hour,'2001-01-01 00:00:00','2001-01-02 23:10:00'), 24), ' uren ', 
MOD(TIMESTAMPDIFF(minute,'2001-01-01 00:00:00','2001-01-02 23:10:00'), 60), ' minuten ' 
)