3

我有一个名为 tblAttendanceDailySummary 的表,并且有一个字段是时间数据类型,名为 timeAttendanceHour(如 09:44:25)。由于月底,我想对这个字段求和。我的意思是一个员工的一个月工作时间需要计算。我怎样才能对时间数据类型求和。

4

2 回答 2

4

时间数据类型的范围是 00:00:00.0000000 到 23:59:59.9999999,因此您不能转换为时间。您必须改为计算小时、分钟和秒。

像这样的东西可能对你有用

select H.Val, M.Val, S.Val
from (
       --Your query goes here
       select dateadd(second, sum(datediff(second, 0, timeAttendanceHour)), 0) as sumtime
       from YourTable
     ) as T
  cross apply (select datedifF(hour, 0, T.sumTime)) as H(Val)
  cross apply (select datediff(minute, 0, dateadd(hour, -H.Val, T.sumTime))) as M(Val)
  cross apply (select datediff(second, 0, dateadd(hour, -H.Val, dateadd(minute, -M.Val, T.sumTime)))) as S(Val)

如果您希望结果为 HH:MM:SS,您可以使用以下命令:

select cast(H.Val as varchar(10))+':'+right(M.Val+100, 2)+':'+right(S.Val+100, 2)
于 2012-04-18T05:46:59.373 回答
0

如何将组件转换为标准整数并将它们相加:

选择 sum(second(timeAttendanceHour))/60 +
    sum(minute(timeAttendanceHour)) +
    sum(hour(timeAttendance))*60 as MonthlyMinutes,
intMonthID
from tblAttendanceDailySummary
where intYear = 2012
group by intEmployeeID, intMonthID

于 2012-04-18T05:52:47.937 回答