我们将所有的日期SQL Server 2008数据库存储在UTC时间的DateTime列中。
我正在使用SSRS创建报告,并且需要将报告上的所有时间都转换为运行报告的计算机的时区。
我知道总可以始终将当前时区偏移量作为参数传递给报表,并从时区中添加或减去偏移量,但是由于夏令时,因此无法正确显示历史日期。
SSRS是否具有处理此功能的功能?我应该将时区传递给SQL Server函数并让SQL Server转换时间吗?
最佳答案
我想到了。
在SSRS报告中,我添加了对程序集System.Core的引用。
然后,在需要转换时区的任何地方:
= Code.FromUTC(字段!UTCDateFromDatabase.Value,参数!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
关于datetime - 在SSRS中使用时区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2969689/