Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So summieren Sie das Zeitfeld in SQL Server

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

Sie können es am Frontend hübsch formatieren. Oder in 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;

Sie verwenden jedoch den falschen Datentyp. TIME wird verwendet, um einen Zeitpunkt anzugeben, nicht ein Intervall oder eine Dauer. Wäre es nicht sinnvoll, ihre Arbeitszeiten in zwei getrennten Spalten zu speichern, StartTime und EndTime ?