计算Postgres中的“时间总和”列

时间:2018-07-23 12:56:51

标签: sql postgresql

在我的出勤表中,加班以“ hh:mm”格式提及。它在数据库中的String列。 整月加班将作​​为一个条目输入。所以我的列数据如下

OVERTIME
'52:00'
'30:00'
'98:00'
'06:00'

现在如何获取“超时”列的SUM。

我尝试过SELECT SUM(OVERTIME::TIME) FROM ATTENDANCE.,它给了我错误:

  

错误:日期/时间字段值超出范围:“ 52:00”

1 个答案:

答案 0 :(得分:0)

假设值是HH:MM,则可以使用字符串操作:

select sum(left(overtime, 2)::numeric + right(overtime, 2)::numeric/60) as hours

请注意,这会将结果显示为十进制小时数。

如果您希望将值作为间隔,也可以这样做:

select sum( cast(overtime as interval) )

请注意,这会将结果显示为天,小时和分钟。