すべての日付SQLServer2008データベースをUTC時間のDateTime列に格納します。 SSRSを使用してレポートを作成していますが、レポートのすべての時間を、レポートの実行元のコンピューターのタイムゾーンに変換する必要があります。
現在のタイムゾーンオフセットをパラメータとしてレポートに渡し、タイムゾーンからオフセットを加算または減算することは常に可能ですが、夏時間のため、これでは履歴日付が正しく表示されません。
SSRSにはこれを処理する機能がありますか?タイムゾーンをSQLサーバー関数に渡し、SQL Serverに時間を変換させる必要がありますか?
私はそれを考え出した。 SSRSレポートで、AssemblySystem.Coreへの参照を追加しました
次に、使用したタイムゾーンを変換する必要がある場所:
= Code.FromUTC(Fields!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
代わりにこれを使用してみてください:
=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