我有一个报告和一个数据源,其中一列是TimeSpan类型。当我使用Fields!TheTime.Value
时,TimeSpan值似乎在报告中正确显示,没有问题。
但是我想对这些值进行求和来得到一个组的总时间。在C#中,我当然可以做一个TimeSpan +另一个TimeSpan,所以我知道它们可以添加。我试过了
=Sum(Fields!TheTime.Value)
但它最终会打印出很多种类型的东西。例如,对于上面输出的时间,我将得到457800000000
作为总和。甚至应该是什么?
无论如何,我如何在报告中总结时间跨度值?对于上述时间跨度,我想以12:43:00
作为总和。除非我的脑袋再一次在数学上失败了...但你明白了:p
答案 0 :(得分:14)
叹息解决方案非常简单......为什么我不能在第一时间尝试过?哦,好吧......也许是因为我没有意识到我可以访问TimeSpan
课......也许是因为我认为自己是盲目的......但无论如何,这里是:
=TimeSpan.FromTicks(Sum(Fields!TheTime.Value))
D'哦!
答案 1 :(得分:1)
@Svish - 我删除了我以前的帖子,因为我的答案很不确定,但我同意@pfunk。
我终于得到了SSRS备份并玩了一下,看起来你的大数字就是刻度数,所以看起来结果的格式化会对你有用。
有趣的是,我以前的错综复杂的答案是一个解决方法,用于汇总DateTime值(在我的查询中使用SQL Server DATETIME数据类型),这是你在SSRS(和SQL)中无法做到的,因为你无法对DATETIME求和。我将它再次包括在这里供将来参考,但我认为之前有点相切:)
下面的代码将DateTime字段转换为double,对结果求和,然后将其转换回DateTime并将其格式化为hh:mm:ss
=Date.FromOADate(Sum(Fields!TheTime.Value.ToOADate())).ToString("hh:mm:ss")
答案 2 :(得分:0)
可能发生的事情是当你显示Fields!TheTime.Value时,SSRS足够聪明,知道将其显示为DateTime类型字段
当您在其中添加总和时,它认为它是一个数字类型字段并将其显示为这样(即,它是在每个时间跨度字段中对“滴答”的数量求和)
尝试将求和值专门格式化为字段属性中的日期时间,它可能会正确显示