将SQL报表生成器Y轴标签的秒数格式化为天,小时,分钟,秒

时间:2016-02-01 23:39:29

标签: datetime reporting-services number-formatting

问题

我无法获取SQL报表生成器图形的y轴来表示数字为' dd HH:mm:ss'。

Graph

背景

我正在做一些SQL报告,而我正在处理的报告是根据文档在每个部门花费的时间来生成数据的堆积区域图。

例如,文件1在部门A 30s,部门B 25s和部门C 90s,总计:145s。 文件2在部门A 20s,部门B 30s和部门C 80s,总计130s。
...等等...

因此,如果有数百或数千个文档,用户将能够判断文档在每个部门的花费时间。

我能够成功查询此数据,并且正如预期的那样,由于已记录的文档数量,总秒数将达到数百万。这也是因为我使用的数据是虚拟数据,所以我想确保我对这个数字进行的任何格式化(当涉及图形时)都能够管理数字。数百人。

我尝试过什么

  • 在垂直轴属性中使用自定义数字格式>数字>类别:定制。我尝试使用格式(DateAdd(...)," HH:mm:ss")这会产生HH:mm:ss没关系,但我无法调整它以给出天数。 />
  • 明确使用' dd HH:mm:ss'在自定义数字格式框中,只需沿轴上的间隔写入该字符串。我怀疑这是因为轴的数据类型是整数,而不是日期时间或日期。
  • 重写SQL Query以输出所需格式的秒数。这不起作用的原因是因为格式只与表格中没有解决问题的每个项目相关联。
  • 调整轴的间隔类型,但同样,由于数据类型,这不起作用。

由于花费了大量时间,我可能错过了一些尝试过的解决方案。但是,任何建议都将受到赞赏。

由于

1 个答案:

答案 0 :(得分:0)

以下代码将在24小时内工作几秒钟(SSRS):

Format(DateAdd(interval, units, datetime), format)

e.g。

Format(DateAdd("s", 86399, "00:00:00"), "HH:mm:ss")提供23:59:59

为了解决处理超过24小时的问题,我回到SQL Management Studio并更改了我的查询以生成日期时间而不是整数。这使Reporting Services能够根据需要对其进行格式化。 SQL查询变为:

DATEADD(SECOND, SUM(WorkTime + IdleTime), '00:00:00') as Total

通过在SQL中使用DATEADD函数,可以立即在Reporting Services中使用日期时间。然后我更改了图表的垂直轴设置:

  • 轴选项恢复为默认值
  • 在垂直轴属性下>数字,选择自定义
  • 在“自定义格式”框中,键入:dd:HH:mm:ss

由于输入数据类型现在自然是datetime,因此Reporting Services将自行处理它。虽然间隔类型可能默认为一天,因此不显示准确的数据,但是向下钻取报告可以管理特定数字。此外,将处理“ ...大约数百...... ”的较小时间,示例时间为:00:04:59:59