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