sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo resumir el campo de tiempo en SQL Server

SELECT EmployeeID, minutes_worked = SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs)) 
FROM dbo.table 
-- WHERE ...
GROUP BY EmployeeID;

Puede formatearlo bastante en la parte delantera. O en T-SQL:

;WITH w(e, mw) AS
(
    SELECT EmployeeID, SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs)) 
    FROM dbo.table 
    -- WHERE ...
    GROUP BY EmployeeID
)
SELECT EmployeeID = e,
  WrkHrs = RTRIM(mw/60) + ':' + RIGHT('0' + RTRIM(mw%60),2)
  FROM w;

Sin embargo, está utilizando el tipo de datos incorrecto. TIME se utiliza para indicar un punto en el tiempo, no un intervalo o duración. ¿No tendría sentido almacenar sus horas de trabajo en dos columnas distintas, StartTime? y EndTime ?