我想计算一周的平均小时数。
e.g。我的每周工作时间是44:43(hh:mm),我的工作日是5 那么它应该返回 8:57
44:43/5 ==> 8时57分
我如何在SQL Server中实现。
答案 0 :(得分:0)
您可以将时间转换为秒,然后分割,然后转换回时间格式。假设WeeklyHours
采用time
格式,如下所示:
select dateadd(second, datediff(second, 0, WeeklyHours) / WorkingDays, cast(0 as time))
如果WeeklyHours
存储为datetime
,那么此表达式肯定有用。
答案 1 :(得分:0)
SELECT CONVERT(VARCHAR,CONVERT(INT,DATEPRT(HH,WH))/5)+':'+
+CONVERT(VARCHAR,(CONVERT(INT,DATEPRT(HH,WH))%5*60+CONVERT(INT,DATEPRT(mm,WH)))/5)
fROM TIME
答案 2 :(得分:0)
这是我根据您的要求构建的查询:
DECLARE @TotalHours VARCHAR(5) = '44:43'
SELECT CAST(CAST(AvgMinutes AS INT)/60 AS VARCHAR) + ':'
+ CAST(CAST(AvgMinutes AS INT)%60 AS VARCHAR)
FROM (
SELECT CEILING((CAST(LEFT(@TotalHours,CHARINDEX(':',@TotalHours) - 1) AS INT ) * 60
+ CAST(RIGHT(@TotalHours,LEN(@TotalHours) - CHARINDEX(':',@TotalHours)) AS INT ))/5.0) AvgMinutes
) AS TotalMinutes
答案 3 :(得分:0)
没有得到计算。我想要得到的是(44 +(43/60))/ 5.我做了43/60将分钟转换为小时。根据此要求,查询为
select (cast(SUBSTRING(Data, 1, charindex(':',Data,1) - 1) as int) +
(cast(SUBSTRING(Data, charindex(':',Data,1) + 1, len(Data)) as decimal(18,2)) / 60)) / 5
from tblWorkHours