Работа с часовыми поясами в SSRS - PullRequest
16 голосов
/ 04 июня 2010

Мы храним все наши базы данных SQL Server 2008 по времени UTC в столбцах DateTime. Я использую SSRS для создания отчетов, и мне нужно все время преобразовывать отчеты в часовой пояс компьютера, с которого они запускают отчет.

Я знаю, что всегда можно просто передать текущее смещение часового пояса в качестве параметра отчета и добавить или вычесть смещение из часового пояса, но это не будет правильно отображать исторические даты из-за летнего времени.

Есть ли в SSRS какие-либо функции, которые справляются с этим? Должен ли я передать часовой пояс функциям сервера SQL и сделать так, чтобы сервер SQL преобразовал время?

Ответы [ 2 ]

14 голосов
/ 18 июня 2010

Я понял это. В отчете SSRS я добавил ссылку на сборку System.Core

Тогда везде, где мне нужно было конвертировать часовой пояс, который я использовал:

= Code.FromUTC (Поля! UTCDateFromDatabase.Value, Параметры! TimeZone.Value)

где Параметры! 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
9 голосов
/ 27 марта 2014

Попробуйте использовать это вместо:

=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

...