私は本当にいくつかの熟練したSQLのヘルプが必要です。私はストアドプロシージャを作成していて、表示するまではすべてが上品で素敵です。データベースに格納されているものはすべてUTCに格納されますが、ブラウザGMTオフセットが取得され、それが事前定義された時間範囲を決定する方法です。問題は、表示する日付を使用していますが、GMTオフセットのために表示される日付が正しくなく、人々を混乱させます。私は短い日付として表示し、ここではそれが転換される部分である。設定日をUTCに合わせて変換する方法は?
SELECT
BundleEvent.BundleId,
CAST(BundleEvent.EventDate AS DATE)
FROM dbo.BundleEvent WITH (NOLOCK)
JOIN dbo.BundleUser WITH (NOLOCK)
ON BundleEvent.BundleId = BundleUser.BundleId
WHERE BundleEvent.EventDate >= @StartTimeGmt AND BundleEvent.EventDate <= @EndTimeGmt
AND BundleUser.UserId = CASE WHEN @UserId IS NULL THEN BundleUser.UserId ELSE @UserId END
GROUP BY
BundleEvent.BundleId,
CAST(BundleEvent.EventDate AS DATE)
Iグループなので、それによって、私はそれを変換する能力を失う短い日付として。だから今日の範囲を選択するとき、彼らはGMTオフセットのために今日と昨日から日付を得るかもしれません。前に誰もこの問題を抱えていたのですか?私はストアドプロシージャで作業しているので、私は非常に限られています。私はこれを解決する方法を知らない。
タイムゾーンを調整する場合は、日付以上のものが必要です。それ以外の場合は調整する必要はありません。おそらく、タイムゾーンを事前に決めて、選択したクエリに情報を送信し、調整してからDATEにキャストします。または、完全なUTCを返し、プログラム的に調整します。 – Ilion