我在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小时)。
我该如何解决这个问题?
谢谢!
答案 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")