SSRS格式的总分钟数转换为总HH:MM:SS

时间:2018-11-06 14:09:13

标签: visual-studio reporting-services ssrs-2012 sql-server-data-tools

当前报告表达式以天:小时:分钟:秒为单位显示数据

=cstr(floor((sum(Fields!phoneInOutbound.Value) / 86400))) & " days " & 
cstr(floor(((sum(Fields!phoneInOutbound.Value) Mod 86400) / 3600))) & ":" & 
cstr(floor((((sum(Fields!phoneInOutbound.Value) Mod 86400) Mod 3600) / 60))) & ":" & 
cstr(floor(((sum(Fields!phoneInOutbound.Value) Mod 86400) Mod 3600) Mod 60))

我试图让它显示总时数:分钟:秒。

到目前为止,我只能使用以下表达式获得分钟:秒;

=cstr(floor((sum(Fields!phoneInOutbound.Value) / 60))) & " : " & 
cstr(floor(((sum(Fields!phoneInOutbound.Value) Mod 60))))

有什么主意如何重新配置​​,这样我可以获得总时数:分钟:秒?

2 个答案:

答案 0 :(得分:0)

如果我是你,我会在sql端处理它,只使用ssrs作为保存数据的地方。您可以根据需要使它变得简单或复杂。当我表示复杂时,我的意思是您从分钟记录中获取数据,然后向其中添加“ min” +秒值+“ sec”。通过将整个内容包装在另一个命名查询中并创建一个计算字段。就个人而言,如果您使用报表服务器的内存来执行此操作(应该用于报告未处理的计算),则不大可能利用SSRS进行计算,但是如果此方法对您来说很容易,那么您就可以使用更多功能。下面是在SQL端处理此问题的示例代码。

create table #temp_time_test (
    phoneInOutbound_IN datetime
    ,phoneInOutbound_OUT datetime
    )

    insert into #temp_time_test values 
    ('11/06/2018 12:24:13.790','11/06/2018 12:34:13.790')



    select DATEDIFF(MINUTE,phoneInOutbound_IN,phoneInOutbound_OUT) from #temp_time_test

答案 1 :(得分:0)

好的,基本上,您需要添加第一条语句(原为几天的位置)和第二条语句(原为小时的位置)。您可以更改第一个语句以获取天数比天数* 24来将天数恢复为THAN + 2nd语句的小时数。可能有一种更简单的方法,即不确定数据集的外观,甚至不确定从中读取的数据库。只是想让您朝正确的方向思考。