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

Posted

技术标签:

【中文标题】将秒格式化为 SQL 报表生成器 Y 轴标签的天、小时、分钟、秒【英文标题】:Formatting Seconds into Days, Hours, Minutes, Seconds for SQL Report Builder Y-Axis Label 【发布时间】: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 查询以将秒数输出为所需格式。这不起作用的原因是因为格式仅与表中的每个项目相关联,这不能解决问题。 调整轴的间隔类型,但同样,由于数据类型,这不起作用。

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于将秒格式化为 SQL 报表生成器 Y 轴标签的天、小时、分钟、秒的主要内容,如果未能解决你的问题,请参考以下文章

将 y 轴标签格式化为具有许多零的更高千位科学记数法?

python使用matplotlib可视化为可视化图像的X轴和Y轴设置自定义的轴标签(axis labels of matplotlib plot)

#/…/u2;/sex2hms==将秒格式化为

js实现将秒数格式化为HH:MM:SS的形式

使用千位分隔符和字体大小格式化 y 轴 matplotlib

报表生成器:明确的 X 轴范围定义?