我的TimeSpan值00:02:02.0
基本上是0小时2分2秒和2毫秒。
我将永远有0个小时。你如何格式化ssrs阅读2.02.0?我知道你可以做= Fields!FinishTime.Value.ToString(" mm:ss:fff")但是它总是产生#error作为值。
谢谢!
答案 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中的内置格式化选项对其进行格式化。