私のデータベース アプリケーションは、異なるタイム ゾーンの複数のサイトにデプロイされる予定です。
YTD 計算のために、今年の 1 月 1 日の午前 0 時の UTC タイムスタンプを決定する T-SQL 関数が必要です。すべてのデータは UTC タイムスタンプで保存されます。
たとえば、シカゴは夏時間 (DST) の UTC-6 であり、シカゴで 2008 年の任意の時点で実行される場合、関数は「2008-01-01 06:00:00」を返す必要があります。来年ニューヨーク (GMT-5 + DST) で実行する場合は、'2009-01-01 05:00:00' を返す必要があります。
から現在の年を取得できますYEAR(GETDATE())
。DATEDIFF
オフセットを決定するためにbetweenGETDATE()
とを実行できると考えGETUTCDATE()
ましたが、結果は DST 中にクエリが実行されるかどうかによって異なります。オフセットを決定するための組み込みの T-SQL 関数や、現在の時刻が DST であるかどうかを知りません。
T-SQLでこの問題を解決できる人はいますか? ハードコーディングするか、テーブルに保存することはできますが、そうしないことをお勧めします。これは、SQL Server 2005 で CLR 統合を使用するのに最適な状況だと思います。私が知らない T-SQL ソリューションがあるかどうか疑問に思っています。