如何在SSRS中将大的时间跨度值转换为(小时:分钟:秒)?

时间:2014-03-18 11:37:56

标签: reporting-services ssrs-2008 time-format

我在报告服务字段中的列值为2.23:48:50(day.hour:分钟:秒)。

我尝试使用以下代码进行转换:

  

(Fields!hrs_apprvd.Value / 60)+“:”+(Fields!hrs_apprvd.Value - ((Fields!hrs_apprvd.Value / 60)* 60)+“:00

  

格式(DateAdd(“s”,(TimeSpan.FromTicks(Sum(Fields!hrs_apprvd.Value))),“00:00:00”),“HH:mm:ss”)

但它不起作用。

我需要将其显示为71:48:50

如何在Reporting Services中执行此操作?

1 个答案:

答案 0 :(得分:3)

不幸的是,您的要求非常困难:

  1. 根据不同的分隔符将字符串拆分为三个组件
  2. 将各种组件转换为整数并将算术应用于这些
  3. 连接所有不同的组件以获得一个调整后的字符串
  4. 基于此,以下表达式将起作用:

    =CInt(Left(Fields!hrs_apprvd.Value, InStr(Fields!hrs_apprvd.Value, ".") - 1))
      * 24
      + CInt(Mid(Fields!hrs_apprvd.Value
        , InStr(Fields!hrs_apprvd.Value, ".") + 1
        , InStr(Fields!hrs_apprvd.Value, ":") - InStr(Fields!hrs_apprvd.Value, ".") - 1))
      & ":" & Right(Fields!hrs_apprvd.Value
          , Len(Fields!hrs_apprvd.Value) - InStr(Fields!hrs_apprvd.Value, ":"))
    

    enter image description here

    enter image description here

    这适用于您的一个示例,但您可能需要稍微调整较大的数据集。

    您还可以通过为较小的表达式(如Left(Fields!hrs_apprvd.Value, InStr(Fields!hrs_apprvd.Value, ".") - 1))添加一组计算字段来简化表达式,然后在表格表达式中引用计算字段。

    你可以看到表达式变得非常复杂 - 应用SSRS的转换也值得研究。