在SSRS中正确显示TimeSpan

时间:2014-08-06 21:05:37

标签: 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作为值。

谢谢!

2 个答案:

答案 0 :(得分:4)

你非常接近,ToString()是正确的,因为SSRS不知道如何使用TimeSpans,但你需要在它周围包裹一个Format来使用格式字符串并转换它回到使用日期格式模式的日期:

=Format(CDate(Fields!FinishTime.Value.ToString()), "mm:ss:fff")

修改

如果你的数据集包含NULL,你将无法使用简单的IIF(IsNothing(Fields!FinishTime.Value), Nothing, <format formula>),因为IIF does not short-circuit并且当它尝试对NULL使用ToString()函数时会看到#error 。所以请尝试一些自定义代码(retrieved from an MSDN forum post):

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

并称之为:

=IIF(IsNothing(Fields!FinishTime.Value), Nothing, Code.FormatTimeSpan(Fields!FinishTime.Value))

答案 1 :(得分:0)

假设您使用的是SQL Server数据源,则有一种更简单的方法。在您的SQL语句中,使用它在其中选择FinishTime字段:

SELECT Convert(datetime, TableName.FinishTime) AS FinishTime, ...

它可以很好地处理null,您可以使用SSRS中的内置格式化选项对其进行格式化。