如何总结SQL Server中的时间字段

Sas*_*Sas 26 sql database sql-server

我有一个名为"WrkHrs"的列,数据类型是时间(hh:mm:ss).我想总结一下员工的工作时间.但是因为它的时间数据类型sql server不让我使用像sum(columnname).

如何总结sql查询中的时间数据类型?

Aar*_*and 29

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

你可以在前端格式化它.或者在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;
Run Code Online (Sandbox Code Playgroud)

但是,您使用的是错误的数据类型.TIME用于表示时间点,而不是间隔或持续时间.那岂不是有意义的存储他们的工作时间在两个不同的列,StartTimeEndTime