我正在开发一个网络应用程序,需要对一个字段的记录数组进行总计。
要进一步解释,请查看包含的图片:
此图描绘了我使用以下查询的输出:
SELECT * FROM logbook WHERE dayNight = 'D'
现在我需要做的是对所有这些记录的 hours
字段中的所有值进行总计。
完成后,输出应如下所示(仅作为示例):
6:05:21
代表 HH:MM:SS。
但是我想用十进制值来表示它的小时和分钟...所以如果我有 6 小时 40 分 2 秒,它会说 jsut 6:40。这将是以下结构 HH:MM。
所以我不知道该怎么做 - 但感谢您的所有帮助!
最佳答案
你可以通过一大堆令人讨厌的 Actor 来完成大部分工作:
select cast(sum(cast(hours as time)) as time)
from logbook
where dayNight = 'D'
这会给你一个时间
值的结果。然后混入time_format
获得所需的精度:
select time_format(cast(sum(cast(hours as time)) as time), '%H:%i')
from logbook
where dayNight = 'D'
您应该将 hours
列从 varchar
更改为 time
.
你可以这样做:
select time_format(sum(cast(hours as time)), '%H:%i')
from logbook
where dayNight = 'D'
如果你想避免额外的类型转换;但是,保留外部转换可能会使以后的调试更容易,因为 sum(cast(hours as time)
会生成类似于 234211
的 23:42:11。
将您的列转换为合理的时间
列后,您就可以取消所有转换:
select time_format(sum(hours), '%H:%i')
from logbook
where dayNight = 'D'
或者对所有内容进行求和,无论dayNight
:
select time_format(sum(hours), '%H:%i')
from logbook
关于mysql - SQL查询逻辑,将行的字段添加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055067/