sql中时间数据类型的总和

时间:2012-04-18 04:31:35

标签: sql sql-server

我有一个名为tblAttendanceDailySummary的表,并且有一个名为timeAttendanceHour的时间数据类型的字段(如09:44:25)。我希望将这个字段的总和归结为月末。我的意思是一个员工一个月的工作时间需要计算。我怎样才能计算时间数据类型。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

如何将组件转换为标准整数并对它们求和:

选择总和(秒(timeAttendanceHour))/ 60 +
sum(分钟(timeAttendanceHour))+
sum(小时(timeAttendance))* 60作为MonthlyMinutes,
intMonthID
来自tblAttendanceDailySummary
其中intYear = 2012
group by intEmployeeID,intMonthID