2015-04-02 60 views
0

我經常通過內聯sql比較日期。在LINQ中以特定格式比較日期

SELECT * FROM dbo.tbl_MyTable 
WHERE 
CONVERT(VARCHAR, DateTimeValueColumn, 112) >= CONVERT(VARCHAR, '20150101', 112) AND 
CONVERT(VARCHAR, DateTimeValueColumn, 112) <= CONVERT(VARCHAR, '20150201', 112) 

我如何指示LINQ爲日期比較生成上述SQL。尋找示例代碼來實現這一點。謝謝

+1

去獲得像LINQpad這樣的工具,做轉換爲LINQ,你可以很容易地看到LINQ將產生的SQL。 – 2015-04-02 08:31:23

+0

是否有可能通過LINQpad工具將sql轉換爲linq? – Mou 2015-04-02 08:34:44

+0

日期沒有格式,它們是二進制值。如果'DateTimeValueColumn'是'date'或'datetime',沒有任何理由需要轉換任何東西,直接比較它,例如:'DateTimeValueColumn> ='20150101'' – 2015-04-02 08:46:36

回答

0

如果你真的被告知要這樣做,它會更容易回答:僅比較時間戳的飛鏢部分。您將它們轉換爲格式112(yyyyMMdd)以實現此目的。

如果您使用LINQ查詢,則將獲得datetimedatetime2列的DateTime對象。爲了比較日期部分,您可以簡單地使用DateTime對象的Date屬性,例如,

[...] 
where row.DateTimeColumn.Date >= new DateTime(2015, 1, 1) && 
     row.DateTimeColumn.Date <= new DateTime(2015, 2, 1)