我们将所有日期SQL Server 2008数据库以UTC时间存储在DateTime列中。 我正在使用SSRS创建报告,我需要将报告上的所有时间转换为运行报告的计算机的时区。
我知道可以随时将当前时区偏移量作为参数传递给报告,并添加或减去时区的偏移量,但由于夏令时,这不能正确显示历史日期。
SSRS是否有任何处理此问题的功能?我应该将时区传递给SQL服务器函数并让SQL Server转换时间吗?
答案 0 :(得分:14)
我明白了。 在SSRS报告中,我添加了对程序集System.Core
的引用然后我需要转换我使用的时区:
= Code.FromUTC(Fields!UTCDateFromDatabase.Value,Parameters!TimeZone.Value)
where 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
答案 1 :(得分:9)
请尝试使用此代码:
=System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)
对于从AX 2012调用的SSRS报告,这是我使用的。