2012-03-12 9 views
1

日付を比較するLinq to Entityクエリがあります。私はその言語が米国英語であるSQLサーバー2008データベースを照会しています。私のアプリケーションは、dd/MM/yyyy形式の日付を処理します。DBとアプリケーションの異なる言語設定との日付比較作業

itemList = from i in _context.Items 
    select i; 

DateTime utcStartDate = DateTime.SpecifyKind(StartDate, DateTimeKind.Utc); 
DateTime utcEndDate = DateTime.SpecifyKind(EndDate, DateTimeKind.Utc); 

var items= from i in itemList 
     where c.ModifiedDate.Date >= utcStartDate.Date && 
      c.ModifiedDate.Date <= utcEndDate.Date 
     select i; 

ここStartDateEndDateがテキストボックスから読み込まれます(日付のみが入力されている)とのDateTimeに変換DateTimeオブジェクトです。典型的な値は以下のとおりです。{8/3/2012 12:00:00 AM} 2012年3月

08のためにこれは、列がデータベースで更新されたときに値が指定されている方法です。

item.ModifiedDate = DateTime.UtcNow.Date; 

は私がサーバーで言語設定を変更することはできません。日付を比較する前に、SQLサーバーからデータを読み取り、 "dd/MM/yyyy"形式に変換する方法はありますか? また、比較が機能するようにDatetime変数を変換する必要がありますか?これを行う正しい、効率的な方法は何ですか?

答えて

3

この形式は、データを文字列として扱う場合にのみ適用されます。示されたコードはそれをしません!それを日付として比較し、バイナリ表現でパラメータを転送します。従って、であり、あいまい性がなく、いかなる点でもフォーマットは含まれていない。

基本的には問題ありません。あなたが求めているのは、実際には「SQLサーバが整数を「1,2、...、9,10,11」とし、「1,10,11,2、... 9」ではなくその答えが「文字列として扱われていないため」

具体的に言えば、SQL Serverのdatetimeは実際には10進数として扱われ、整数部分は曜日で小数部分は時間;。。任意の「DD/MM/YYYY」やなどは、私たち貧しい肉質の読者のためにのみの存在「YYYY/MM/DD」サーバはそのようなことによる混乱を避けて

+0

これは奇妙です。私はここに紛失しています... where節のDateTimeオブジェクトがdd/MM/YYYYにあるとき、私のために働いていません。結果は返されません。 jqueryのdatepicker形式をyy-mm-ddに変更しました。それはうまくいくようです。 – escist

+0

@escist **「DateTime ... in dd/MM/YYYY」という**のようなものはありません。これは暴力団です。 datetime **は数字です** - 文字列ではなく、整数が "12345"でもなく "12,345.0"でもないように**形式の概念はありません**それはちょうど整数123で、文字列表現の概念はありません。 –

+0

@escist ** **ここでの本当の問題は、あなたの 'StartDate'と' EndDate'の値が間違っているということだけです! –

1

あなたのLINQでDateTimeオブジェクトを使用する場合SQL Serverの列定義にあるオブジェクトのC#側とdateオブジェクトのクエリは、linq2sqlによって正しく処理される必要があります。あなたは何もする必要はありません。

Soが

解決しようとしている問題は何ですか?

DateTime.SpecifyKind(EndDate, DateTimeKind.Utc); 

そして、はい、他の回答のように、DateTimeデータ型はlinq2entitiesで自動的に処理されます。

この行は、私はあなたがタイムゾーンに問題はなく、地域の日付時刻形式を持っていると思います。 .ToString()やその他のメソッドを使用してデータをユーザーに提示するときは、地域の日付形式について心配するだけで済みます。

+0

タイムゾーン間のあいまいさを取り除くために、私はUTCを使用しています。 – escist

関連する問題