【问题标题】:Incrementing hours and days增加小时数和天数
【发布时间】:2012-06-29 21:23:19
【问题描述】:

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

【问题讨论】:

    标签: sql sql-server sql-server-2008 reporting-services


    【解决方案1】:

    您可以为此使用 Date.AddHours() - 只需创建一个新的日期,它是任何一年的开始并使用

    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

    玩一会

    【讨论】:

    • 这看起来棒极了,非常感谢!你能告诉我在哪里可以添加这些公式吗?
    • 如果您右键单击单元格,您应该能够“编辑表达式” - 您可以在 SSRS 的几乎任何位置键入任何表达式。您还可以在 SSRS 中使用大量 .NET 框架 - 因此创建日期使用 System.DateTime VB 语法 - 我将更新我的答案
    • 这看起来很棒,我现在正在尝试实施它,非常感谢您的帮助!
    • 抱歉应该是 Math.Ceiling :) - 它将一个数字四舍五入到下一个整数 - 所以 1.05 变成 2 等等
    • 这真是太棒了,非常感谢您的帮助
    【解决方案2】:

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

    【讨论】:

    • 这真是太棒了!像魅力一样工作!!!非常感谢!我现在仍在尝试其他解决方案,因为我更喜欢 SSRS 解决方案
    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多