3

tblAttendanceDailySummary という名前のテーブルがあり、timeAttendanceHour (09:44:25 など) という名前の時間データ型のフィールドがあります。月末のため、このフィールドの合計を出したいのですが、1 人の従業員の 1 か月の勤務時間を計算する必要があることを意味します。時間のデータ型を合計するにはどうすればよいですか。

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 に答える