我正在 SSRS 中构建报告。
在设计模式下,它看起来像这样:
tat2
是从 1 到 192 的值,并出现在报告中,如下所示:
1
2
3
...
192
我想知道是否有办法代替做这样的事情:
DAY 1 12:00AM
DAY 1 1:00AM
DAY 1 2:00AM
...
DAY 7 9:00PM
...
DAY 8 12:00AM
换句话说,我想将数字 1 到 192 转换为小时和天。
我正在 SSRS 中构建报告。
在设计模式下,它看起来像这样:
tat2
是从 1 到 192 的值,并出现在报告中,如下所示:
1
2
3
...
192
我想知道是否有办法代替做这样的事情:
DAY 1 12:00AM
DAY 1 1:00AM
DAY 1 2:00AM
...
DAY 7 9:00PM
...
DAY 8 12:00AM
换句话说,我想将数字 1 到 192 转换为小时和天。
您可以为此使用 Date.AddHours() - 只需创建一个新的 Date ,它是任何一年的开始并使用
Date.AddHours(Fields!YourNumericField.Value)
这样你就可以获得滚动时间 - 你会超过 192 小时吗?最大范围是多少,因为这会在 365 处翻转。您可以混合和匹配并执行如下表达式:
=Math.Ceiling(Fields!YourNumericField.Value / 24) & SomeDate.AddHours(Fields!YourNumericField.Value)
类似的东西
我在这台机器上没有 SSRS 来测试:P
编辑:
好的,要获取基准日期,您可以使用 new DateTime(year, month, day)
http://msdn.microsoft.com/en-us/library/system.datetime.aspx
所以表达式
="DAY " & Math.Ceiling(Fields!tat2.Value / 24) & " " & format(new DateTime(2000, 1, 1).AddHours(Fields!tat2.Value), "hh:mm tt")
这应该给出:
DAY 1 10:45 AM
应该可以工作 - 如果您想更改上午 10:00 位的格式,请检查此参考:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
"HH:mm" 为您提供 24 小时时间 + 分钟,例如 23:54
“hh:mm tt”是 12 小时,例如 12:00 PM
玩一玩
这可以在底层查询中轻松完成 - 不确定是否在 SSRS 中执行此操作:
SELECT
Tat2 / 24 + 1 as Day,
CAST(Tat2 % 24 AS CHAR(2)) + ':00 ' +
CASE WHEN Tat2 % 24 > 12 then 'PM' else 'AM' end as AMPM
FROM YourTable
当然,这不会处理超过 365 天,因为它不会数月或数年。