2012-03-27 28 views
6

我有一個Mysql表格存儲格式(YYYY-MM-DD HH:MM:SS)的日期。Mysql SEC_TO_TIME沒有結尾秒 - 解決方案找到

我想要的是總結的HH:MM:SS部分選定行,因此,正如我在另一篇文章中,我使用的查詢

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(date))) FROM table 

此查詢工作。它彙總我想要的部分並以格式HH:MM:SS返回它。

我的問題是如果它有可能從結果中刪除秒。

我必須在查詢中這樣做,因爲我使用的CMS不允許我在這部分上使用php。

順便說一句,如果我可以以天,小時和分鐘的形式返回結果,那麼總和大於24小時的情況下,結果會很棒。

在此先感謝

任何有興趣我找到了解決辦法

SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(hours))),'%H:%i') FROM table 
+0

你能給一些示例輸入/輸出? – 2012-03-27 09:55:33

+0

在表格中,我有兩行數據'2012-03-27 01:05:00'和'2012-03-27 17:00:00'。上面的查詢返回'18:05:00'這是正確的,但我想要返回'18:05' – tliokos 2012-03-27 09:59:26

回答

1

嘗試此查詢,它會計算天數,小時和分鐘 -

SELECT 
    SUM(TIME_TO_SEC(date) DIV 86400) days, 
    SUM(EXTRACT(HOUR FROM (SEC_TO_TIME(TIME_TO_SEC(date) % 86400)))) hours, 
    SUM(EXTRACT(MINUTE FROM (SEC_TO_TIME(TIME_TO_SEC(date) % 86400)))) minutes 
FROM table 

然後用CONCAT函數將這些結果格式化爲一個字符串。

+0

謝謝,但不幸的是它不工作。還是一樣的結果 – tliokos 2012-03-27 09:56:41

+0

我改變了答案。 – Devart 2012-03-27 10:19:32

+0

非常感謝。雖然我努力使CONCAT工作,但它工作。 – tliokos 2012-03-27 10:45:33

-1
SELECT SUBSTR(SEC_TO_TIME(1001),2,7); 

將輸出

0:16:41 
+0

不好。這將剝去小時的第一位數字,並將秒數保留。 – trincot 2015-11-17 18:29:47

+0

SEC_TO_TIME(24 * 3600 * 10)= 240:00:00將變爲「40:00:0」 – 2015-11-18 10:33:30

2

一個有效的解決辦法是切斷最後3個字符:

SELECT SUBSTRING(SEC_TO_TIME(seconds), 1, 5);