2010-06-16 86 views
21

如何在SQL中計算具有以下格式的稱爲「timeSpent」的我的柱狀圖的時間總和:HH:mm ?我正在使用MySQL。使用sql計算類型時間的總和

我的專欄的類型是時間。

它具有這種結構

 
TimeFrom like 10:00:00   12:00:00  02:00:00 
TimeUntil  08:00:00   09:15:00  01:15:00 
Time spent  

total time 03:15:00 
+0

RDBMS:mysql。 查詢從mytablename中選擇SUM(timespent)do not't work like like我想要的總和是02:10:30它顯示021030. – kawtousse 2010-06-16 15:20:52

+0

你的意思是你有2 cols timefrom和time直到?你的數據庫是什麼? '來自TableName'的總和(DATEDIFF(minute,timeFrom,timeUntil))' – Inv3r53 2010-06-16 15:21:04

+0

它是由類型時間引起的。 它需要一個特定的功能,我不知道請幫助。 – kawtousse 2010-06-16 15:21:44

回答

0

如果timeSpent列的數據類型是TIME你應該能夠使用以下查詢:

SELECT SUM(timeSpent) 
    FROM YourTableName -- replace YourTableName with the actual table name 

但是,如果情況並非如此,您可能需要使用轉換才能轉換爲Time數據類型。像這樣的東西應該工作:

SELECT SUM(timeSpent - CAST('0:0:0' as TIME)) 
    FROM YourTableName -- replace YourTableName with the actual table name 
+0

沒有不完全是這個運行異常 – kawtousse 2010-06-16 15:56:06

+0

嗯..你可以發佈表格定義和你到目前爲止的查詢嗎? – 2010-06-16 16:02:12

0

在MySQL中,你會做這樣的事情,以獲得時間間隔:

SELECT TIMEDIFF('08:00:00', '10:00:00'); 

然後添加的時間間隔,你會怎麼做:

SELECT ADDTIME('01:00:00', '01:30:00'); 

不幸的是,您沒有存儲日期或使用24小時制,所以這些計算結果會不正確,因爲您的TimeUntil實際上比您的TimeFrom要低。

另一種方法是(假設你理清上述問題)的時間間隔爲存儲使用TIMESTAMPDIFF()秒:

UPDATE my_table SET time_spent=TIMESTAMPDIFF(start, end)); 
SELECT SEC_TO_TIME(SUM(time_spent)) FROM my_table; 
50
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(`timeSpent`))) AS timeSum 
FROM YourTableName 

這爲我工作。希望這可以幫助。

+0

它花了很多周圍的網絡,這是我正在尋找的答案。謝謝! – Sevenearths 2016-03-09 10:05:00

+0

謝謝,這是正確的答案 – 2016-06-21 03:14:52

+0

這會產生錯誤的結果。 – 2016-11-21 07:47:52

1

100%的工作代碼來獲得的時間和出MySQL數據庫:

SELECT 
SEC_TO_TIME(SUM(time_to_sec(`db`.`tablename`))) 
As timeSum 
FROM 
`tablename` 

嘗試並確認。 謝謝。