【问题标题】:Formatting Seconds into Days, Hours, Minutes, Seconds for SQL Report Builder Y-Axis Label将秒格式化为 SQL 报表生成器 Y 轴标签的天、小时、分钟、秒
【发布时间】:2016-02-01 23:39:29
【问题描述】:

问题

我无法让 SQL 报表生成器图表的 y 轴将数字表示为“dd HH:mm:ss”。

背景

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

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

因此,鉴于有成百上千的文档,用户将能够判断文档在每个部门花费的时间。

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

我尝试了什么

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

由于花费了很多时间,我可能错过了一些尝试的解决方案。但是,任何建议都将不胜感激。

谢谢

【问题讨论】:

    标签: datetime reporting-services number-formatting


    【解决方案1】:

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

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

    例如

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2017-05-10
      相关资源
      最近更新 更多