如何在 SSRS 中显示超过 24 小时的小时数
How to display time in hours overshooting 24 hours in SSRS
我有一个报告,其中有一列显示时间累计超过 24 小时。我希望它以小时为单位显示。
我找到了一个解决方案,当时间超过 86400 秒(一天中的秒数)时,它会显示天数和时间,但我只想显示以小时为单位的时间。
=IIF(Fields!TotalTime.Value < 86400,
Format(DateAdd("s", Fields!TotalTime.Value, "00:00:00"), "HH:mm:ss"),
Floor(Fields!TotalTime.Value / 86400) & " days, " & Format(DateAdd("s", Fields!TotalTime.Value,
"00:00:00"), "HH:mm:ss")
你可以只用表达式来做到这一点,但这种方式更可重用..
将以下代码添加到您报告的自定义代码中
(向原作者致歉,我根据多年前的博客...我找不到你的post)
Public Function SecondsAsHHMMSS(ByVal secs) As String
Dim h As String =INT(secs/3600)
Dim m as string
Dim s as string
If Len(h) <2 Then
h = RIGHT(("0" & h), 2)
End If
m = RIGHT("0" & INT((secs MOD 3600)/60), 2)
s = RIGHT("0" & ((secs MOD 3600) MOD 60), 2)
SecondsAsHHMMSS= h & ":" & m & ":" & s
End Function
此函数将花费数秒并转换为 HH:MM:SS 格式。
现在我们要做的就是传入每行的累计秒数。
为此我们可以使用 System.TimeSpan。
这假设数据库字段是 TIME 数据类型
=Code.SecondsAsHHMMSS(RunningValue(Fields!TimeInOffice.Value.TotalSeconds, SUM, Nothing))
从中间开始锻炼....
- 我们获取
TimeInOffice
字段的值,因为它是 Time
数据类型,所以我们可以使用 TotalSeconds
属性 来获取秒数代表.
- 我们得到这些秒数的 运行 总和('Nothing' 是范围,如果你想限制行组内的范围等,请将行组的名称放在引号中, 代替
Nothing
关键字)
- 新的我们有秒数,我们将它传递给我们的自定义函数
结果是这样的。
我有一个报告,其中有一列显示时间累计超过 24 小时。我希望它以小时为单位显示。 我找到了一个解决方案,当时间超过 86400 秒(一天中的秒数)时,它会显示天数和时间,但我只想显示以小时为单位的时间。
=IIF(Fields!TotalTime.Value < 86400,
Format(DateAdd("s", Fields!TotalTime.Value, "00:00:00"), "HH:mm:ss"),
Floor(Fields!TotalTime.Value / 86400) & " days, " & Format(DateAdd("s", Fields!TotalTime.Value,
"00:00:00"), "HH:mm:ss")
你可以只用表达式来做到这一点,但这种方式更可重用..
将以下代码添加到您报告的自定义代码中 (向原作者致歉,我根据多年前的博客...我找不到你的post)
Public Function SecondsAsHHMMSS(ByVal secs) As String
Dim h As String =INT(secs/3600)
Dim m as string
Dim s as string
If Len(h) <2 Then
h = RIGHT(("0" & h), 2)
End If
m = RIGHT("0" & INT((secs MOD 3600)/60), 2)
s = RIGHT("0" & ((secs MOD 3600) MOD 60), 2)
SecondsAsHHMMSS= h & ":" & m & ":" & s
End Function
此函数将花费数秒并转换为 HH:MM:SS 格式。
现在我们要做的就是传入每行的累计秒数。
为此我们可以使用 System.TimeSpan。
这假设数据库字段是 TIME 数据类型
=Code.SecondsAsHHMMSS(RunningValue(Fields!TimeInOffice.Value.TotalSeconds, SUM, Nothing))
从中间开始锻炼....
- 我们获取
TimeInOffice
字段的值,因为它是Time
数据类型,所以我们可以使用TotalSeconds
属性 来获取秒数代表. - 我们得到这些秒数的 运行 总和('Nothing' 是范围,如果你想限制行组内的范围等,请将行组的名称放在引号中, 代替
Nothing
关键字) - 新的我们有秒数,我们将它传递给我们的自定义函数
结果是这样的。