0


0

Linq to SQL DateTime2クエリ

datetime2フィールドを持つテーブルがあり、日付が今日であるすべての行をそこから取得する必要があります。 むしろ奇妙なことに(私の意見では、正当な理由があると確信しています)私がそうするなら:

MyTable.Where(t => t.Date == DateTime.Today).ToList()

今日の日付の全体が存在しても、何も返しません。

私はここで何が足りないのですか? datetime2を使用すると、時間枠を指定するために大なり小なりを使用する代わりに、このようなクエリを実行できると思いましたか?

編集

Linq to SQLのDateTime2表現の.Date部分を使用してみました:

MyTable.Where(t => t.Date.Date == DateTime.Today).ToList()

しかし、私はまだ何も得ていません。 しかし、私のデータベースには、値が「2011-08-05 00:00:00.0000000」の行があり、これは明らかに今日です。

*もう一度編集*クエリを実行しました:

List dates = MyTable.Select(t => t.Date.Date.ToString()).ToList();

そして、「2011-08-05」のような結果が得られるので、その部分は明らかに機能します。

しかし、私が走ったとき

DateTime.Today.Date.ToString()

「08/05/2011 00:00:00」と表示されます。 この時間部分を追加すると問題が発生する可能性がありますか? これをどのように削除しますか?

*編集3 *

コードを使用して動作するようになりました:

MyTable.Where(t => t.Date.Date.ToString() == DateTime.Today.Date.ToString("yyyy-dd-MM")).ToList();

しかし、これはハックのようです(比較の前に文字列に変換します)。

2 Answer


1


データベースの日付は実際には今日(5月8日)ではないようです。 おそらく8月5日です。


0


datetime2フィールドはDateと呼ばれるようです。 この日付フィールドの日付プロパティを使用して、時刻を無視する必要があります。

MyTable.Where(t => t.Date.Date == DateTime.Today).ToList()