2011-05-08 195 views
0

我有一個帶有datetime2字段的表,我需要從當前日期獲取所有行。而是奇怪的(在我看來,但我敢肯定有它的正當理由),如果我這樣做:Linq to SQL DateTime2查詢

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

它沒有返回即使有與今天的日期entires。

我在這裏錯過了什麼?我認爲datetime2允許你這樣查詢,而不必使用大於和小於指定時間範圍?

編輯

我使用Linq中的DATETIME2表示的.Date部分SQL嘗試:

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

但我仍然得到什麼。然而在我的數據庫中有一些值爲2011-08-05 00:00:00.0000000的行,這在今天顯而易見。

再次編輯 我已經跑了查詢:

List<string> 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(); 

這似乎哈克雖然(轉換爲字符串比較之前),肯定必須有一個更清潔的方式?

+0

是否有與日期一起存儲的時間? – 2011-05-08 14:57:28

+0

@Conrad是有一段時間存儲,但我只想今天的一切。 – AndrewC 2011-05-08 15:01:10

+0

您需要查看L2S生成的原始SQL。 – 2011-05-08 15:18:18

回答

1

聽起來像數據庫中的日期實際上不是今天(5月8日)。這可能是8月5日。

+0

這就是我的想法。我該如何改變它? – AndrewC 2011-05-08 20:03:18

+0

我們需要查看插入日期時間的代碼。或者你是否僅僅使用Management Studio來獲取一些測試數據......? – 2011-05-08 20:05:16

+0

輸入格式錯誤。畢竟那......( – AndrewC 2011-05-09 02:02:31

0

它看起來像你的datetime2字段被稱爲日期。您需要使用此日期字段的日期屬性來忽略一天中的時間。

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

它不需要:MyTable.Where(t => t.Date.Date == DateTime.Today.Date).ToList() – 2011-05-08 15:02:46

+0

@Lee也試過,沒有工作。 – AndrewC 2011-05-08 15:07:36

+0

@Lee:DateTime.Today與DateTime.Now.Date相同,因爲今天不包含時間,所以您不需要.Date。 – vcsjones 2011-05-08 16:52:58