Работа с часовыми поясами в SSRS
Мы сохраняем все наши базы данных SQL Server 2008 в UTC в столбцах DateTime.
Я использую SSRS для создания отчетов, и мне нужно конвертировать все время в отчетах в часовой пояс компьютера, на котором выполняется отчет.
Я знаю, что всегда мог просто передать текущее смещение часового пояса в качестве параметра отчета и добавить или вычесть смещение от часового пояса, но это неправильно отображало бы исторические даты из-за летнего сбережения.
Имеются ли в SSRS какие-либо функции, которые справляются с этим? Должен ли я передавать часовой пояс на функции сервера SQL и преобразовывать время SQL Server?
Ответы
Ответ 1
Я понял это.
В отчете SSRS я добавил ссылку на сборку System.Core
Тогда мне нужно было преобразовать используемый часовой пояс:
= Code.FromUTC(поля! 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
Ответ 2
Попробуйте использовать это вместо:
=System.TimeZone.CurrentTimeZone.ToLocalTime(Fields!DateTime.Value)
Для отчетов SSRS, вызванных с AX 2012, это то, что я использую.
Кредит отправляется на этот пост: http://social.msdn.microsoft.com/Forums/en-US/500448a3-bf58-44ab-8572-81becd67d8b8/convert-utc-time-to-local-time?forum=sqlreportingservices