0

データベースのクエリで日付をパラメーターとして処理する正しい方法を正確に知りたいです。私のデータベースは Windows Azure でホストされており、データ型を持つフィールドとしてのテーブルがありますJob。はUTC としてデータベースに保存されます。ModifiedDateTimeDateTime

日付に基づいてジョブのリストを照会したいModified。ユーザーは開始日と終了日を入力しますが、それらは異なるタイム ゾーンに基づいています。データベースにクエリを実行するときに、日付をデータと正確に一致させるにはどうすればよいですか?

ASP.Net MVC を使用しています。また、夏時間も考慮する必要があります。

次のようなクエリを単純に記述できないことはわかっています。

var data = _context.Jobs
                   .Where(c => c.Modified >= startDate && c.Modified <= endDate);
4

2 に答える 2

0

ユーザーのブラウザが正しい時刻やタイムゾーンを報告しない可能性があるため、これは難しい問題ですが、それを信頼できると仮定すると...

...彼らがローカルタイムゾーンで入力した時間をUTCに変換する必要があり、タイムゾーンのオフセット(ブラウザから簡単に取得できます)だけでなく、実際のタイムゾーンを知る必要があるため、これはまだ難しい問題です。そのため、夏時間に適切なオフセットを適用するか、入力した日時には適用せず、「現在」には適用できません。

このリンクは、ブラウザのタイムゾーンを決定するのに役立ちます。タイムゾーンに基づく実際の計算については、Jon Skeet のNodaタイム ライブラリを参照してください。

ほとんどの人は夏時間の問題に乗り出し、ブラウザーのタイムゾーン オフセットを使用して入力された日時の値を調整し、古いデータをクエリするときに 1 時間のエラーを気にしないと想定します (またはクエリを 1 時間拡張して、 )。

于 2013-07-24T01:15:58.780 に答える