我正在开发一个网络应用,需要在一个字段中添加一系列记录。
要进一步说明,请查看附带的图片:
此图像使用以下查询描述我的输出:
SELECT * FROM logbook WHERE dayNight = 'D'
现在我需要做的是总计所有这些记录的hours
字段中的所有值。
一旦完成,输出应该是以下内容(仅作为示例):
6:05:21
代表HH:MM:SS。
但是我想用几小时和几分钟代表它,用十进制值表示......所以如果我有6小时40分钟和2秒,那就说6:40。这将是以下结构HH:MM。
所以我不知道该怎么做 - 但是谢谢你的帮助!
答案 0 :(得分:3)
你可以通过大量讨厌的演员来完成大部分工作:
select cast(sum(cast(hours as time)) as time)
from logbook
where dayNight = 'D'
这将为您提供time
值的结果。然后混合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)
只会在23:42:11生成类似234211
的内容。
将列转换为合理的time
列后,您就可以取消所有投射:
select time_format(sum(hours), '%H:%i')
from logbook
where dayNight = 'D'
无论dayNight
是什么,或总结全部:
select time_format(sum(hours), '%H:%i')
from logbook