私は 2 つのテーブルを持っています。1 つは時間で保存されたクロッキングで、もう 1 つは ClockInLogs.TimeIn と TimeOut の間の休憩を保存します。各クロックインタイムには、常に複数の休憩があります。
ClockInLogs -
ID - int
TimeIn - DateTime
TimeOut - DateTime
Breaks -
CID - Int (joined to ClockInLogs.ID)
TimeIn - DateTime
TimeOut - DateTime
私の SQL クエリでは、出勤ごとに休憩列の合計時間数を取得する必要があります。これまでのところ、私は -
SELECT
C.ID,
C.ClockDateTimeIn as 'Date',
DATENAME(dw, C.ClockDateTimeIn) as 'DayOfWeek',
C.UserID,
C.ClockDateTimeIn as 'ClockInTime',
C.ClockDateTimeOut as 'ClockOutTime',
DATEDIFF(minute, ClockDateTimeIn, ClockDateTimeOut) as 'Att'
FROM clockinlogs C
INNER JOIN breaks b on C.ID = b.CID
INNER JOIN Users u on C.UserID = u.ID
次に必要な列は、休憩内の総時間数です。基本的に、Break.TimeIn と Break.TimeOut ごとに時間の差を計算し、それぞれの休憩を追加します。
これが理にかなっていることを願っています!