请有人帮助我。 我想加班加点。
示例:
Date Ot hours
Feb 2 0.30
Feb 3 0.30
Feb 4 0.30
Feb 5 0.30
Feb 6 0.30
Feb 7 0.30
Feb 8 0.30
Total 2.10
总计应为3.30(3小时30分钟)。
我在SQL中尝试过:
SELECT CONVERT(DECIMAL(18,2), floor(sum(floor(OT_HRS)) + sum(OT_HRS - floor(OT_HRS)) * 100.0/60)/1 + ((sum(floor(OT_HRS))/1 + sum(OT_HRS - floor(OT_HRS)) * 100.0/60) % 1) * 60.0/100 )
FROM T_SUMMARY_ATTENDANCE
WHERE OT_HRS is not null
谢谢。
答案 0 :(得分:1)
假设这是在表格中,请采取以下方法:
所以:
select sum(ot_hours * 100) as minutes,
(sum(ot_hours * 100) / 60 +
sum(ot_hours * 100) % 60) / 100.0
)
from . . .
完成算术后,我强烈建议您不要将数据存储为此格式的数字。如果您的值始终少于24小时,则可以使用time
数据类型。如果更大,那么我会推荐两种解决方案之一:
这些都是其他人不会感到困惑的标准格式。
答案 1 :(得分:0)
这将给出预期的结果。
select cast(cast((SUM(OT_HRS)*100)/60 as int) as varchar(10))+ ':' + cast(cast((SUM(OT_HRS)*100)%60 as int) as varchar(10))
from #T_SUMMARY_ATTENDANCE