1

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

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

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

(从这里得到:在 SSRS 2008 中以 HH:MM:SS 格式显示秒数

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

我该如何解决这个问题?

谢谢!

4

3 回答 3

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")
于 2012-11-25T09:38:17.577 回答
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")

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

于 2013-03-09T16:59:39.157 回答
0

您确实需要使用基于小时的解决方案,基于天的解决方案可能会给您带来夏令时转换的麻烦。

=Floor(Fields!TotalTime.Value / 3600) &":"& Format(DateAdd("s", Fields!TotalTime.Value, "00:00"), "mm:ss")
于 2014-06-18T17:32:51.833 回答