如何以 HH:MM:SS 格式获得具有精确值的时间字段的正确 sum()

Posted

技术标签:

【中文标题】如何以 HH:MM:SS 格式获得具有精确值的时间字段的正确 sum()【英文标题】:How can I get the correct sum() of time fields with exact value in HH:MM:SS format 【发布时间】:2016-11-08 00:19:56 【问题描述】:

我在 phpMyAdmin 使用了类似于下面的查询:

SELECT id, name, group_concat(timecomplete) AS 'Timelist', sum(timetaken) AS 'Total Time'
FROM dailysummarylog 

这是我的查询生成的:

身份证 | 姓名 | 时间表 | 总时间 1 |员工 1 |06:35:15,00:59:54,01:24:45 | 81914 2 |员工 2 |02:44:42,00:59:36,00:15:10 | 31888

问题 #1: 我在 Timelist 上使用 sum() 来获取 Total Time 但它没有显示正确的总数。当我尝试计算它时,总时间应该如下:

1: 8 小时 59 分 54 秒 2: 3 小时 59 分 28 秒

问题 #2: 当我尝试使用 PHP 将其存储到另一个表中时,TimelistTotal Time仅显示第一个值> 员工 2 显示“00:00:00”。对于员工 1,它显示“08:19:14”

其他信息: TimelistTotal Time 都设置为“时间”类型。

【问题讨论】:

在不知道您的数据是什么样子的情况下,没有人可以做任何事情。请一次只问一个问题。 我会在 php 中处理第 2 部分 在第 2 部分中,我在 PHP 中使用“mysqli_query”然后 INSERT INTO 生成另一个表,其中包含第 1 部分生成的结果。 【参考方案1】:

问题 1 的答案使用 SEC_TO_TIME 和 TIME_TO_SEC FUNCTIONS

SELECT id, name, group_concat(timecomplete) AS 'Timelist', SEC_TO_TIME(sum(TIME_TO_SEC((timetaken))) AS 'Total Time'
FROM dailysummarylog group by name;

【讨论】:

这解决了我的第一个和第二个问题。我只是设置了 SEC_TO_TIME(sum(TIME_TO_SEC(timetaken)))。非常感谢!

以上是关于如何以 HH:MM:SS 格式获得具有精确值的时间字段的正确 sum()的主要内容,如果未能解决你的问题,请参考以下文章

C# 以 hh:mm:ss 格式显示毫秒

如何在Java中以字符串格式获取当前时间戳? “yyyy.MM.dd.HH.mm.ss”

如何将毫秒转换为“hh:mm:ss”格式?

如何在 Excel 上将“dd:hh:mm:ss”格式转换为数字类型?

如何在angularjs-datepicker中获得hh:mm:ss

以 hh:mm:ss 格式表示的两个日期之间的碳时间差