代码之家  ›  专栏  ›  技术社区  ›  jamiegs

在SSR中使用时区

  •  16
  • jamiegs  · 技术社区  · 15 年前

    我们将所有日期SQL Server 2008数据库以UTC时间存储在datetime列中。 我正在使用SSR创建报告,我需要将报告上的所有时间转换为运行报告的计算机所在的时区。

    我知道,可以将当前时区偏移量作为参数传递给报表,并从时区中添加或减去偏移量,但由于日光节约,这无法正确显示历史日期。

    SSR有处理这个的功能吗?我应该将时区传递给SQL Server函数并让SQL Server转换时间吗?

    2 回复  |  直到 11 年前
        1
  •  14
  •   jamiegs    14 年前

    我知道了。 在SSRS报告中,我添加了对assembly system.core的引用。

    然后我需要在任何地方转换我使用的时区:

    =code.fromUTC(字段!utcdatefromdatabase.value,参数!时区值

    哪里有参数!TimeZone.Value是时区的字符串值,可以使用TimeZone.CurrentTimeZone.StandardName在应用程序中检索该值。

    我可能应该把UTC的工作:

    Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date
     Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz))
    end function
    
        2
  •  9
  •   rjv    11 年前

    试着用这个来代替:

    =System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)
    

    对于从AX 2012调用的SSRS报告,这是我使用的。

    此职位的学分: http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time?forum=sqlreportingservices

    推荐文章