我有一个名为"WrkHrs"的列,数据类型是time(hh:mm:ss).我想总结一下员工的工作时间.但由于是时候了,数据类型sql server不允许我使用sum(columnname)
.
如何汇总SQL查询中的时间数据类型?
我有一个名为"WrkHrs"的列,数据类型是time(hh:mm:ss).我想总结一下员工的工作时间.但由于是时候了,数据类型sql server不允许我使用sum(columnname)
.
如何汇总SQL查询中的时间数据类型?
SELECT EmployeeID, minutes_worked = SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs))
FROM dbo.table
-- WHERE ...
GROUP BY EmployeeID;
你可以在前端将其格式化.或者在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;
但是,您使用了错误的数据类型.TIME
用于表示时间点,而不是间隔或持续时间.将他们的工作时间存储在StartTime
和EndTime
两个不同的列中难道没有意义吗?