将 SQL 报表生成器 Y 轴标签的秒格式化为天、小时、分钟、秒
Formatting Seconds into Days, Hours, Minutes, Seconds for SQL Report Builder Y-Axis Label
问题
我无法获取 SQL Report Builder 图表的 y 轴来将数字表示为 'dd HH:mm:ss'。
背景
我正在做一些 SQL 报告,我正在处理的报告旨在根据文档在每个部门花费的时间量生成数据的堆积面积图。
例如
文档1在A部门30s,B部门25s,C部门90s,总计:145s。
文件2在A部20s,B部30s,C部80s,共130s
...等等...
鉴于有成百上千份文件,用户将能够判断文件在每个部门花费了多长时间。
我能够成功查询此数据,正如预期的那样,由于已记录的文档数量,总秒数约为数百万秒。这也是因为我使用的数据是虚拟数据,所以我想确保我对这个数字所做的任何格式化(当涉及到图形时)都能够按照以下顺序管理数字数百个。
我试过的
- 在垂直轴属性 > 数字 > 类别:自定义中使用自定义数字格式。我尝试使用 Format(DateAdd(...), "HH:mm:ss") 会产生 HH:mm:ss 好的,但我无法调整它以提供天数。
- 在自定义数字格式框中明确使用 'dd HH:mm:ss' 只需沿着轴上的间隔写入该字符串。我怀疑这是因为轴的数据类型是整数,而不是日期时间或日期。
- 重写 SQL 查询以按所需格式输出秒数。这不起作用的原因是格式只与 table 中的每个项目相关联,这不能解决问题。
- 调整轴的间隔类型,但同样,由于数据类型,这不起作用。
由于花费了太多时间,我可能错过了一些尝试过的解决方案。不过,如有任何建议,我们将不胜感激。
谢谢
以下代码将在 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 中使用日期时间。然后我更改了图表的垂直轴设置:
- 轴选项回到默认值
- 在垂直轴属性 > 数字下,select 自定义
- 在“自定义格式”框中,键入:
dd:HH:mm:ss
由于输入数据类型现在自然是日期时间,Reporting Services 将自行处理。这很有用,尽管间隔类型可能默认为一天,因此不会显示 准确 数据,向下钻取报告可以管理特定数字。此外,将处理更小的时间“...以数百...”为例,示例时间为:00:04:59:59
.
问题
我无法获取 SQL Report Builder 图表的 y 轴来将数字表示为 'dd HH:mm:ss'。
背景
我正在做一些 SQL 报告,我正在处理的报告旨在根据文档在每个部门花费的时间量生成数据的堆积面积图。
例如
文档1在A部门30s,B部门25s,C部门90s,总计:145s。
文件2在A部20s,B部30s,C部80s,共130s
...等等...
鉴于有成百上千份文件,用户将能够判断文件在每个部门花费了多长时间。
我能够成功查询此数据,正如预期的那样,由于已记录的文档数量,总秒数约为数百万秒。这也是因为我使用的数据是虚拟数据,所以我想确保我对这个数字所做的任何格式化(当涉及到图形时)都能够按照以下顺序管理数字数百个。
我试过的
- 在垂直轴属性 > 数字 > 类别:自定义中使用自定义数字格式。我尝试使用 Format(DateAdd(...), "HH:mm:ss") 会产生 HH:mm:ss 好的,但我无法调整它以提供天数。
- 在自定义数字格式框中明确使用 'dd HH:mm:ss' 只需沿着轴上的间隔写入该字符串。我怀疑这是因为轴的数据类型是整数,而不是日期时间或日期。
- 重写 SQL 查询以按所需格式输出秒数。这不起作用的原因是格式只与 table 中的每个项目相关联,这不能解决问题。
- 调整轴的间隔类型,但同样,由于数据类型,这不起作用。
由于花费了太多时间,我可能错过了一些尝试过的解决方案。不过,如有任何建议,我们将不胜感激。
谢谢
以下代码将在 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 中使用日期时间。然后我更改了图表的垂直轴设置:
- 轴选项回到默认值
- 在垂直轴属性 > 数字下,select 自定义
- 在“自定义格式”框中,键入:
dd:HH:mm:ss
由于输入数据类型现在自然是日期时间,Reporting Services 将自行处理。这很有用,尽管间隔类型可能默认为一天,因此不会显示 准确 数据,向下钻取报告可以管理特定数字。此外,将处理更小的时间“...以数百...”为例,示例时间为:00:04:59:59
.