SQL Server报告服务格式小时为小时:分钟
题
我正在编写有关SQL Server报告服务器的报告,该报告具有由用户分组的许多小时,并且根据值的总和计算了总计。
目前,我的查询运行了一个存储的POC,该Proc返回了HH:MM格式,而不是小数小时,因为我们的用户发现它更直观。当我尝试使用SSRS表达式添加列时,就会发生问题,因为总和函数不足以处理此格式的添加时间。
有什么办法:
- 以小数形式计算时,以HH:mm格式显示时间间隔(以几分钟或小时为单位)?
- 或分开并计算HH:MM文本值的总数以作为表达式得出的总数?
我想避免不得不写/运行第二个查询只是为了获得总数。
解决方案
回答我自己的#1:
- 使您的查询返回数分钟(表示
TimeSpent
以下)。 - 如果尚未将文本框的格式设置为“常规”
- 使用以下表达式作为值:
=FLOOR(Fields!TimeSpent.Value / 60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
- 对于sum文本框,请使用以下表达式:
=FLOOR(Sum(Fields!TimeSpent.Value) / 60) & ":" & RIGHT("0" & (Sum(Fields!TimeSpent.Value) MOD 60), 2)
其他提示
您也可以尝试将此函数放入报告的自定义代码中。
Function secondsToString(seconds As int64) As String
Dim myTS As New TimeSpan(seconds * 10000000)
Return String.Format("{0:00}:{1:00}:{2:00}",myTS.Hours, myTS.Minutes, myTS.Seconds)
End Function
我的SP通常会在几秒钟内返回时间,这使我不必付出太多思考,如果我必须返回HH:MM:SS在一个以上的位置。另外,您可以正常进行所有聚合,并将它们包裹在此中以获得漂亮的格式。
我不能为此表示赞赏,因为我知道我前一次在网络上偶然发现了它,但我不记得在哪里。
因此,在您的情况下,您需要将其转换为秒,您可以尝试使用以下代码:
= format(dateadd(“ s”,(参数!reportparameter1.value * 60),“ 00:00:00”),“ HH:MM:SS”)
希望这可以帮助
不隶属于 StackOverflow