00:00格式的总时数来自mySQL表格

时间:2018-02-12 10:16:43

标签: mysql

我在Varchar2数据类型中有一个表格列,其数据格式为' 00'。现在,我想使用SUM()函数添加此列的总数。请建议添加方法单一选择声明中的总数字。



<table>
<tr>
<th>Customer Code<th/>
<th>Hours<th/>
</tr>
<tr>
<td>1<td/>
<td>22:30<td/>
</tr>
<tr>
<td>2<td/>
<td>11:20<td/>
</tr>
<tr>
<td>2<td/>
<td>10:20<td/>
</tr>


</table>
&#13;
&#13;
&#13;

我需要单一选择查询,它返回客户代码和总小时数之和 针对每个客户

2 个答案:

答案 0 :(得分:2)

假设您的数据库架构如下:

CREATE TABLE IF NOT EXISTS `test` (
    `id` int(11) unsigned AUTO_INCREMENT PRIMARY KEY,
    `code` int(11) unsigned NOT NULL,
    `content` varchar(10) NOT NULL
) DEFAULT CHARSET=utf8;

INSERT INTO `test` (`id`, `code`, `content`) VALUES
    ('1', '1', '10:30'),
    ('2', '1', '5:40'),
    ('3', '2', '22:30'),
    ('4', '3', '15:20');

然后,你可以得到结果:

SELECT 
    code,
    SEC_TO_TIME(SUM(TIME_TO_SEC(CAST(content AS TIME)))) AS total
FROM
    test
GROUP BY code;

哪个会给你

code    total
1       16:10:00
2       22:30:00
3       15:20:00

答案 1 :(得分:2)

上面的ans非常优化,但你可以使用

做同样的事情
SELECT code,Replace(ROUND((SUM(substr(content,1,2) * 60) + SUM(substr(content,4,5)) ) / 60 , 2) ,'.',':') as total_hrs FROM test group by code

如果您不想使用大部分预先定义的功能,这可能有所帮助。