Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como resumir o campo de tempo no SQL Server

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

Você pode formatá-lo bem no front-end. Ou em 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;

No entanto, você está usando o tipo de dados errado. TIME é usado para indicar um ponto no tempo, não um intervalo ou duração. Não faria sentido armazenar suas horas de trabalho em duas colunas distintas, StartTime e EndTime ?