0

我正在 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 转换为小时和天。

4

2 回答 2

3

您可以为此使用 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

玩一玩

于 2012-06-29T21:54:18.647 回答
1

这可以在底层查询中轻松完成 - 不确定是否在 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 天,因为它不会数月或数年。

于 2012-06-29T21:56:05.960 回答