在SSRS中正确显示TimeSpan

0 reporting-services ssrs-2012

我的TimeSpan值00:02:02.0 基本上是0小时2分2秒和2毫秒。

我将永远有0个小时。您如何格式化ssrs以读取2.02.0?我知道您可以做到= Fields!FinishTime.Value.ToString(“ mm:ss:fff”),但是它总是产生#error作为值。

谢谢!

stu*_*ker 5

您非常接近,这ToString()是正确的,因为SSRS不知道如何使用TimeSpans,但是您需要将其Format环绕以使用格式字符串,然后将其转换回日期以使用日期格式模式:

=Format(CDate(Fields!FinishTime.Value.ToString()), "mm:ss:fff")
Run Code Online (Sandbox Code Playgroud)

编辑

如果您的数据集包含NULL,则将无法使用简单的方法,IIF(IsNothing(Fields!FinishTime.Value), Nothing, <format formula>)因为IIF不会短路,并且在尝试对NULL使用ToString()函数时会看到#error。因此,请尝试一些自定义代码(从MSDN论坛帖子中检索):

Function FormatTimeSpan(TS as TimeSpan) as String
Dim DT as new DateTime(TS.Ticks)
Return DT.ToString("mm:ss:fff")
End Function
Run Code Online (Sandbox Code Playgroud)

并这样称呼它:

=IIF(IsNothing(Fields!FinishTime.Value), Nothing, Code.FormatTimeSpan(Fields!FinishTime.Value))
Run Code Online (Sandbox Code Playgroud)