Работа с часовыми поясами в 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