2012-04-18 16 views
3

私はtblAttendanceDailySummaryという名前のテーブルがあり、フィールドはtimeAttendanceHour(09:44:25など)という名前の時刻データ型です。私は月の終わりのためにこのフィールドを合計したい。私は1つの従業員の1ヶ月の作業時間が計算する必要があることを意味する。私は時間のデータ型を合計することができます。sqlの時刻データ型の合計

+0

[SUM()](http://dev.mysql.com/doc/refman/5.0/ja/group-by-functions.html#function_sum)を試しましたか? –

+0

質問を投稿するatleast ... – Teja

+0

私はこのコードで試してみました "DATEADD(MILLISECOND、SUM(DATEDIFF(MILLISECOND、0、CAST(ISNULL(timeAttendanceHour、'00:00:00 ')AS DATETIME))) )、0)AS TIME)FROM dbo.tblAttendanceDailySummary intEmployeeID = 1397 AND(dbo.tblAttendanceDailySummary.intMonthId = 04)AND dbo.tblAttendanceDailySummary.intYear = 2012 " – yeasir007

答えて

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) 
+0

boos.Nice投稿 – yeasir007

+0

こんにちは@Mikaelありがとうございます。私はあなたからのより多くのヘルプを取得したい。このクエリの主な目的は、労働者の総給与を計算することですこのクエリによって返された月のために、1時間当たりの給与は10ドル(お金のデータ型として)、彼/彼女は合計245.35時間のように働いています。どのように私は複数のそれらを私は1時間当たりの給与とこのクエリの結果を意味することができます。ありがとう。 – yeasir007

+0

@ yeasir007 - 'sum(datediff(second、0、timeAttendanceHour))/ 3600.0'は勤務時間を10進数で表示します。 –

0

どのように標準整数へのコンポーネントの変換についてそして、それらを合計する:

選択合計(秒(timeAttendanceHour))/ 60 +
       和tblAttendanceDailySummary
intEmployeeID、intMonthID

によってintYear = 2012
群からMonthlyMinutes、
intMonthID
として(分(timeAttendanceHour))+
       和(時間(timeAttendance))* 60
+0

このクエリは、「秒」が認識された組み込み関数名ではないというエラーをスローします。 – yeasir007

関連する問題