Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Résumer la colonne Time à l'aide d'une requête sql

SQL Fiddle

Configuration du schéma 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')
;

Requête 1 :

SELECT convert(varchar(8), dateadd(second, SUM(DATEDIFF(SECOND, ClockIn, ClockOut)), 0),  108)
from Table2
group by repID

Résultats :

| COLUMN_0 |
------------
| 14:02:04 |

Requête 2 :

select sum(datediff(second,ClockIn,ClockOut))/3600 as hours_worked
from Table2

Résultats :

| hours_worked|
------------
|       38 |

Requête 3 :

select sum(datediff(minute, 0, TotalHours)) / 60.0 as hours_worked
from Table2

Résultats :

| HOURS_WORKED |
----------------
|           38 |

Ici, la dernière requête a été tirée de la réponse de FreeLancers car j'étais impatient de savoir si cela fonctionnait ou non.

Ici, vous devez d'abord convertir votre différence de date et d'heure en seconde ou en minute, puis reconvertir cette heure en heure.

J'espère que cela vous aidera.