在SSRS中使用时区

Jam*_*egs 16 datetime datetimeoffset ssrs-2008

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

我知道总是可以将当前时区偏移量作为参数传递给报告,并添加或减去时区的偏移量,但由于夏令时,这不能正确显示历史日期.

SSRS是否有任何处理此功能的功能?我应该将时区传递给SQL服务器函数并让SQL Server转换时间吗?

Jam*_*egs 14

我想到了.在SSRS报告中,我添加了对程序集System.Core的引用

然后我需要转换我使用的时区:

= Code.FromUTC(Fields!UTCDateFromDatabase.Value,Parameters!TimeZone.Value)

其中Parameters!TimeZone.Value是时区的字符串值,可以使用TimeZone.CurrentTimeZone.StandardName在应用程序中检索

我应该把FromUTC做的:

Shared Function FromUTC(ByVal d As Date, ByVal tz As String) As Date
 Return (TimeZoneInfo.ConvertTimeBySystemTimeZoneId(d, TimeZoneInfo.Utc.Id, tz))
end function
Run Code Online (Sandbox Code Playgroud)


小智 9

请尝试使用此代码:

=System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)
Run Code Online (Sandbox Code Playgroud)

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

感谢这篇文章:http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time?forum=sqlreportingservices

  • 这真的有用吗?报告在服务器端呈现.这将仅转换为本地服务器时间,而不是用户的本地时间. (5认同)