Time SQL Server Reporting Services将小时格式为小时:分钟

Time SQL Server Reporting Services将小时格式为小时:分钟,time,format,ssrs-2008,Time,Format,Ssrs 2008,我正在SQL Server Reporting Server上编写报告,报告中的小时数按(比如)用户分组,总小时数根据值的总和计算 目前,我的查询运行一个存储过程,它以HH:MM格式返回小时数,而不是十进制小时数,因为我们的用户发现这更直观。当我尝试使用SSRS表达式对列进行累加时,就会出现问题,因为SUM函数不够智能,无法处理这种格式的累加时间 有没有办法: 以HH:MM格式显示时间间隔(以分钟或小时为单位),同时以十进制形式计算时间间隔 或者拆分并计算HH:MM文本值的总和,以得到表达式形式

我正在SQL Server Reporting Server上编写报告,报告中的小时数按(比如)用户分组,总小时数根据值的总和计算

目前,我的查询运行一个存储过程,它以HH:MM格式返回小时数,而不是十进制小时数,因为我们的用户发现这更直观。当我尝试使用SSRS表达式对列进行累加时,就会出现问题,因为SUM函数不够智能,无法处理这种格式的累加时间

有没有办法:

  • 以HH:MM格式显示时间间隔(以分钟或小时为单位),同时以十进制形式计算时间间隔
  • 或者拆分并计算HH:MM文本值的总和,以得到表达式形式的总和
  • 我希望避免为了得到总数而编写/运行第二个查询

    回答我自己的问题#1:

  • 使您的查询返回分钟数(由下面的
    TimeSpent
    表示)
  • 如果文本框的格式尚未设置,请将其设置为“常规”
  • 使用以下表达式作为值:
    =FLOOR(Fields!TimeSpent.Value/60)和“&RIGHT(“0”和(Fields!TimeSpent.Value MOD 60),2)
  • 对于sum文本框,使用以下表达式:
    =FLOOR(sum(Fields!TimeSpent.Value)/60)&“&RIGHT(“0”&(sum(Fields!TimeSpent.Value)MOD 60),2)

  • 您也可以尝试将此函数放入报表的自定义代码中

    Function secondsToString(seconds As int64) As String
    Dim myTS As New TimeSpan(seconds * 10000000)
    Return String.Format("{0:00}:{1:00}:{2:00}",myTS.Hours, myTS.Minutes, myTS.Seconds)
    End Function
    
    我的SP通常以秒为单位返回时间,如果我必须在多个位置返回HH:MM:SS,这使我不必太费劲地思考。另外,您可以正常地进行所有聚合,并将它们包装成一个漂亮的格式


    我不能相信这一点,因为我知道我不久前在网上偶然发现了它,但我记不起它在哪里。

    所以在您的情况下,它是分钟,所以您需要将它转换为秒,您可以尝试使用以下代码:

    =格式(DateAdd(“s”),(Parameters!ReportParameter1.Value*60),“00:00:00”),“HH:mm:ss”)

    希望这有帮助