【问题标题】:How to Display beyond 24 hrs in SSRS 2008 in HH:MM:SS format如何在 SSRS 2008 中以 HH:MM:SS 格式显示超过 24 小时
【发布时间】:2012-11-23 19:13:30
【问题描述】:

我在 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 小时)。

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 为什么不直接加上天数?

标签: reporting-services ssrs-2008


【解决方案1】:

一天有 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")

【讨论】:

【解决方案2】:

对于 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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 这正是@Konza 发布的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2023-03-07
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多