在SSRS中使用时区

时间:2010-06-03 20:53:51

标签: datetime ssrs-2008 datetimeoffset

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

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

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

2 个答案:

答案 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报告,这是我使用的。

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