web-dev-qa-db-ja.com

SSRSでのタイムゾーンの操作

すべての日付SQLServer2008データベースをUTC時間のDateTime列に格納します。 SSRSを使用してレポートを作成していますが、レポートのすべての時間を、レポートの実行元のコンピューターのタイムゾーンに変換する必要があります。

現在のタイムゾーンオフセットをパラメータとしてレポートに渡し、タイムゾーンからオフセットを加算または減算することは常に可能ですが、夏時間のため、これでは履歴日付が正しく表示されません。

SSRSにはこれを処理する機能がありますか?タイムゾーンをSQLサーバー関数に渡し、SQL Serverに時間を変換させる必要がありますか?

17
Jamiegs

私はそれを考え出した。 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
14
Jamiegs

代わりにこれを使用してみてください:

=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

9
rjv