8

我有一个报告和一个数据源,其中一列的类型为 TimeSpan。当我使用时,TimeSpan 值似乎在报告中正确显示Fields!TheTime.Value,没有问题。

  • 07:02:00
  • 05:41:00

但我想对这些值进行求和以获得一组的总时间。在 C# 中,我当然可以做一个 TimeSpan + 另一个 TimeSpan,所以我知道可以添加它们。我试过

=Sum(Fields!TheTime.Value)

但它最终以某种形式打印出来。例如,对于上面的输出时间,我会得到457800000000总和。那甚至应该是什么?

无论如何,我怎样才能在报告中总结时间跨度值?对于上述时间跨度,我想以12:43:00总和结束。除非我的数学再次让我失望了......但你明白了:p

4

3 回答 3

16

叹息解决方案简单得令人讨厌......为什么我不能一开始就尝试过呢?哦,好吧......也许是因为我没有意识到我可以TimeSpan上课......也许是因为我认为自己是盲人......但无论如何,这里是:

=TimeSpan.FromTicks(Sum(Fields!TheTime.Value))

哦!

于 2009-03-02T09:13:37.723 回答
1

@Svish - 我删除了我之前的帖子,因为我对自己的答案有一定的不确定性,但我同意@pfunk。

我终于恢复了 SSRS 并玩了一下,看起来你的大数字就是滴答数,所以看起来对结果进行一些格式化对你有用。

有趣的是,我之前复杂的答案是对 DateTime 值求和(在我的查询中使用 SQL Server DATETIME 数据类型)的一种解决方法,而这在 SSRS(和 SQL)中是无法做到的,因为你不能对 DATETIME 求和。我将再次将其包含在此处以供将来参考,但我认为之前有点切线:)

下面的代码将 DateTime 字段转换为双精度值,对结果求和,然后将其转换回 DateTime 并将其格式化为 hh:mm:ss

=Date.FromOADate(Sum(Fields!TheTime.Value.ToOADate())).ToString("hh:mm:ss")
于 2009-02-27T19:04:21.887 回答
0

可能发生的情况是,当您显示 Fields!TheTime.Value 时,SSRS 足够聪明,可以知道将其显示为 DateTime 类型的字段

当您在其中添加总和时,它认为它是一个数字类型字段并将其显示为这样(即,它对每个时间跨度字段中的“刻度”数求和)

尝试在字段属性中将总和值专门格式化为日期时间,它可能会正确显示

于 2009-02-27T18:38:29.937 回答