MS SQL Server 2008 Schema Setup :
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')
;
Forespørgsel 1 :
SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0), 108)
from Table2
group by repID
| COLUMN_0 |
------------
| 14:02:04 |
Forespørgsel 2 :
select sum(datediff(second,ClockIn,ClockOut))/3600 as hours_worked
from Table2
| hours_worked|
------------
| 38 |
Forespørgsel 3 :
select sum(datediff(minute, 0, TotalHours)) / 60.0 as hours_worked
from Table2
| HOURS_WORKED |
----------------
| 38 |
Her er den sidste forespørgsel taget fra FreeLancers svar, da jeg var ivrig efter at vide, om det virker eller ej.
Her skal du først konvertere din dato og klokkeslætsforskel til enten sekund eller minut og derefter konvertere den tid tilbage til timen.
Håber dette hjælper.