2012-01-13 5 views
0

私は本当にいくつかの熟練した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オフセットのために今日と昨日から日付を得るかもしれません。前に誰もこの問題を抱えていたのですか?私はストアドプロシージャで作業しているので、私は非常に限られています。私はこれを解決する方法を知らない。

+0

タイムゾーンを調整する場合は、日付以上のものが必要です。それ以外の場合は調整する必要はありません。おそらく、タイムゾーンを事前に決めて、選択したクエリに情報を送信し、調整してからDATEにキャストします。または、完全なUTCを返し、プログラム的に調整します。 – Ilion

答えて

0

データベースでこれを解決しようとは思わないでください。 utcの日付を保存するのは正しいです。フロントエンドでユーザーの時間オフセットを処理する必要があります(ユーザー権限ごとに異なる場合があります)。

フロントエンドアプリでは、「今日の」リクエストのutc日付も指定する必要があります。

関連する問題