MS SQL Server 2008 スキーマのセットアップ :
CREATE TABLE Table2 ([repID] int, [ClockIn] datetime, [ClockOut] datetime, [TotalHours] varchar(7));INSERT INTO Table2 ([repID], [ClockIn], [ClockOut], [TotalHours])VALUES (109145, '7:50:50 AM', '3:37:16 PM', '7:46:26'), (109145, '7:52:41 AM', '3:44:51 PM'、'7:52:10')、(109145、'8:42:40 AM'、'3:46:29 PM'、'7:3:49')、(109145、'7 :50:52 AM'、'3:42:59 PM'、'7:52:7')、(109145、'8:09:23 AM'、'3:36:55 PM'、'7:27 :32');コード>
クエリ 1 :
select convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0), 108) from Table2group by repID
結果 :
<プレ>| COLUMN_0 |------------| 14:02:04 |コード>
クエリ 2 :
select sum(datediff(second,ClockIn,ClockOut))/3600 as hours_workedfrom Table2
結果
:
<プレ>|労働時間|------------| 38 |コード>
クエリ 3 :
select sum(datediff(minute, 0, TotalHours)) / 60.0 as hours_workedfrom Table2
結果
:
<プレ>| HOURS_WORKED |----------------| 38 |コード>
ここで、最後のクエリは FreeLancers の回答から取得したものです。それが機能するかどうかを知りたいと思っていたからです。
ここでは、まず日時の差を秒または分のいずれかに変換し、次にその時間を時間に戻す必要があります。
これがお役に立てば幸いです。