SQL查询逻辑,将行的字段添加到一起

时间:2011-08-14 04:48:06

标签: mysql sql

我正在开发一个网络应用,需要在一个字段中添加一系列记录。

要进一步说明,请查看附带的图片:

enter image description here

此图像使用以下查询描述我的输出:

SELECT * FROM logbook WHERE dayNight = 'D'

现在我需要做的是总计所有这些记录的hours字段中的所有值。

一旦完成,输出应该是以下内容(仅作为示例):

6:05:21

代表HH:MM:SS。

但是我想用几小时和几分钟代表它,用十进制值表示......所以如果我有6小时40分钟和2秒,那就说6:40。这将是以下结构HH:MM。

所以我不知道该怎么做 - 但是谢谢你的帮助!

1 个答案:

答案 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