如何在SSRS 2008中以HH:MM:SS格式显示超过24小时

时间:2012-11-23 19:13:31

标签: reporting-services ssrs-2008

我在SSRS 2008中有一个报告,它从一个表中提取数据,TotalTime是一个整数值,以秒为单位。

要显示的是我在表达式中使用它的时间:

=Format(DateAdd("s", Fields!TotalTime.Value, "00:00:00"), "HH:mm:ss")

(从这里得到:Display Seconds Count in HH:MM:SS format in SSRS 2008

现在,当值超过24小时时,它会产生一种“模块”值。我的意思是:如果值是29小时,而不是显示29:00:00它将显示05:00:00。如果值为51小时,则显示03:00:00(取出48小时)。

我该如何解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:5)

一天有86,400秒。因此,如果秒数大于该值,则使用天数:

=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")

答案 1 :(得分:5)

对于HH:mm:ss格式,您可以使用:

=Floor(Fields!TotalTime.Value / 3600) &":"& Format(DateAdd("s", Fields!TotalTime.Value, "00:00"), "mm:ss")

在这种情况下,例如90000sec将显示为: 25:00:00

对于DD:HH:mm:ss格式使用:

Floor(Fields!TotalTime.Value / 86400) &":"& Format(DateAdd("s", Fields!TotalTime.Value, "00:00:00"), "HH:mm:ss")

90000秒将显示为: 1:01:00:00

答案 2 :(得分:0)

您确实需要使用基于时间的解决方案,基于日期的解决方案可能会让您在夏令时转换时遇到麻烦。

=Floor(Fields!TotalTime.Value / 3600) &":"& Format(DateAdd("s", Fields!TotalTime.Value, "00:00"), "mm:ss")