Thiết lập lược đồ 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')
;
Truy vấn 1 :
SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0), 108)
from Table2
group by repID
Kết quả :
| COLUMN_0 |
------------
| 14:02:04 |
Truy vấn 2 :
select sum(datediff(second,ClockIn,ClockOut))/3600 as hours_worked
from Table2
Kết quả :
| hours_worked|
------------
| 38 |
Truy vấn 3 :
select sum(datediff(minute, 0, TotalHours)) / 60.0 as hours_worked
from Table2
Kết quả :
| HOURS_WORKED |
----------------
| 38 |
Ở đây, truy vấn cuối cùng đã được lấy từ câu trả lời của FreeLancers vì tôi rất háo hức muốn biết liệu nó có hoạt động hay không.
Ở đây, Đầu tiên, bạn cần chuyển đổi chênh lệch ngày giờ của mình thành giây hoặc phút, sau đó chuyển đổi thời gian đó trở lại giờ.
Hy vọng điều này sẽ hữu ích.