17

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

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

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

4

2 に答える 2

14

私はそれを考え出した。SSRS レポートでは、アセンブリ System.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
于 2010-06-17T22:04:36.093 に答える
10

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

=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

于 2014-03-26T22:31:44.610 に答える