.NET TimeZoneInfo クラスは優れており、SQL 2005 データベースに複数のタイム ゾーンからデータを記録する際の問題をすべて解決してくれると思いました。
データベースの UTC 日時を他のタイム ゾーンに変換するには、TimeZoneInfo.FindSystemTimeZoneById() を使用してタイム ゾーンを TimeZoneInfo クラスに取得し、TimeZoneInfo.ConvertTimeFromUtc() を呼び出します。素晴らしい!これを SQL .NET CLR から呼び出すだけです。
しかし...TimeZoneInfo には MayLeakOnAbort のホスト保護属性があります。
VS 2008 を使用して SQL 関数またはストアド プロシージャを作成すると、system.TimeZoneInfo クラスが使用されていることがわかりません。また、何らかの方法で TimeZoneInfo クラスを参照できたとしても、アセンブリを SQL Sever 2005 に登録しようとすると、何らかのセキュリティ例外が発生する可能性があると想定しています。
ヘルプ!SQL Server 2005 から TimeZoneInfo クラスとそのすべての機能にアクセスする方法はありますか?
注意: 最初の回答の後にこの警告を追加しました:
世界中のさまざまな場所にサイトがあります。サイト レベルでの傾向分析が必要になる可能性があるイベントに対して、ローカル時間と UTC 時間をデータベースに保存する必要があります。トレンドは 1 年間で 52,000 を超えるデータ ポイントで構成される場合があるため、効率を高めるために、時間を UTC で DB に保存し、クライアント上のすべてのデータ ポイントを変換することはできません。したがって、DB 内で任意のタイムゾーンの現地時間を UTC 時間との間で変換する機能が必要です。