2012-03-27 26 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);