SSRS 2016 总和时间值表示为字符串
SSRS 2016 Sum time values represented as string
我有一列显示时间(小时(可能> 24):分钟:秒),在我的数据集中表示为字符串。
40:02:20
365:23:30
12:00:59
23:59:59
我需要求和,在本例中为:
574:59:59 or 24.3:59:59 (any of this output is ok)
我尝试使用下面的表达式,但它给了我错误,因为我需要以某种方式转换时间值。
=TimeSpan.FromTicks(Sum(Fields!time.Value))
如有任何帮助,我将不胜感激。
它没有具体回答您的问题,但最佳做法是将持续时间(以秒为单位)或 StartDates 和 EndDates 存储为 DATETIME
或类似的 DATATYPE,然后使用 DATEDIFF
计算持续时间。
然后在SSRS报告中可以使用这个表达式显示为HH:MM:SS
=Floor(Sum(Fields!someSeconds.Value) / 3600) & ":" & Format(DateAdd("s", Sum(Fields!someSeconds.Value), "00:00"), "mm:ss")
在您的报告中添加以下自定义代码
Public Dim hours As Integer
Public Dim minutes As Integer
Public Dim seconds As Integer
Public Function sumTime( ByVal s As String) As String
Dim substrings() As String = s.Split(":")
hours = hours + Cint(substrings(0))
minutes = minutes + Cint(substrings(1))
seconds = seconds + Cint(substrings(2))
minutes = minutes + (Math.floor(seconds / 60))
seconds = seconds mod 60
hours = hours + (Math.floor(minutes / 60))
minutes = minutes mod 60
Return s
End Function
该函数将时间字符串作为参数,将其拆分为小时、分钟和秒,并创建每个时间的总和。
插入如下表达式即可调用函数(图片:蓝色字体颜色)
= Code.sumTime(Fields!time1.Value)
对于总计(图片:绿色字体颜色),您可以使用类似
的表达式
= Cstr(Code.hours) & ":" & Right("0" & Cstr(Code.minutes),2) & ":" & Right("0" & Cstr(Code.seconds),2)
我有一列显示时间(小时(可能> 24):分钟:秒),在我的数据集中表示为字符串。
40:02:20
365:23:30
12:00:59
23:59:59
我需要求和,在本例中为:
574:59:59 or 24.3:59:59 (any of this output is ok)
我尝试使用下面的表达式,但它给了我错误,因为我需要以某种方式转换时间值。
=TimeSpan.FromTicks(Sum(Fields!time.Value))
如有任何帮助,我将不胜感激。
它没有具体回答您的问题,但最佳做法是将持续时间(以秒为单位)或 StartDates 和 EndDates 存储为 DATETIME
或类似的 DATATYPE,然后使用 DATEDIFF
计算持续时间。
然后在SSRS报告中可以使用这个表达式显示为HH:MM:SS
=Floor(Sum(Fields!someSeconds.Value) / 3600) & ":" & Format(DateAdd("s", Sum(Fields!someSeconds.Value), "00:00"), "mm:ss")
在您的报告中添加以下自定义代码
Public Dim hours As Integer
Public Dim minutes As Integer
Public Dim seconds As Integer
Public Function sumTime( ByVal s As String) As String
Dim substrings() As String = s.Split(":")
hours = hours + Cint(substrings(0))
minutes = minutes + Cint(substrings(1))
seconds = seconds + Cint(substrings(2))
minutes = minutes + (Math.floor(seconds / 60))
seconds = seconds mod 60
hours = hours + (Math.floor(minutes / 60))
minutes = minutes mod 60
Return s
End Function
该函数将时间字符串作为参数,将其拆分为小时、分钟和秒,并创建每个时间的总和。
插入如下表达式即可调用函数(图片:蓝色字体颜色)
= Code.sumTime(Fields!time1.Value)
对于总计(图片:绿色字体颜色),您可以使用类似
的表达式= Cstr(Code.hours) & ":" & Right("0" & Cstr(Code.minutes),2) & ":" & Right("0" & Cstr(Code.seconds),2)