c# RDLC Report Sum TimeSpan 格式

c# RDCL Report Sum TimeSpan Format

我在 windows 表单上使用 ReportViewer 和 RDCL 报告。 我有一个来自 sql

的字段
 select xxx,  CONVERT(VARCHAR(5),MAX(e.EventTime) - MIN(e.EventTime),108) as  total from xxx

并在 RDCL 报告中按一个字段分组。

我在组页脚上有一个字段用于组总计 字段表达式:

=TimeSpan.FromTicks(Sum(TimeSpan.Parse(Fields!total.Value)))

如果小时数超过 24,则显示为 4.10:30:00 (d.hh:mm:ss)。 我想显示为 106:30 (hhh:mm) 或 106.30

如何从表达式中做到这一点?

对于总秒数,您可以在行详细信息中使用此表达式:

=IIf(Fields!TotalSeconds.Value < 86400,
    Format(DateAdd("s", Fields!TotalSeconds.Value, "00:00:00"), "HH:mm:ss"),
    Floor(Fields!TotalSeconds.Value / 86400) * 24 + (DateAdd("s", Fields!TotalSeconds.Value, "00:00:00")).Hour & ":" & Format(DateAdd("s", Fields!TotalSeconds.Value, "00:00:00"), "mm:ss")
)

小组总计:

=IIf(Sum(Fields!TotalSeconds.Value) < 86400,
    Format(DateAdd("s", Sum(Fields!TotalSeconds.Value), "00:00:00"), "HH:mm:ss"),
    Floor(Sum(Fields!TotalSeconds.Value) / 86400) * 24 + (DateAdd("s", Sum(Fields!TotalSeconds.Value), "00:00:00")).Hour & ":" & Format(DateAdd("s", Sum(Fields!TotalSeconds.Value), "00:00:00"), "mm:ss")
)

如果您希望您的总组格式为 HH:mm,只需将格式样式修改为 mm 而不是 mm:ss

我找到了解决方案

=Math.Floor(Sum(TimeSpan.Parse(Fields!total.Value))/(36000000000)).ToString() + ":"+ Math.Round((Sum(TimeSpan.Parse(Fields!total.Value))/(600000000)) mod 60).ToString()