2009-12-15 203 views
4

我認爲這很簡單,但顯然不是!在DataTable中使用BETWEEN。選擇

基本上,我有一個日期和想要做的兩個日期列這樣的「之間」:

myDataTable.Select(myDate & " between (StartDate and EndDate)") 

哪裏開始日期日期和結束日期是指那些在數據表中存在日期列。

任何想法?

回答

7

爲什麼不使用> =< =

Dim dt As New DataTable() 
dt.Columns.Add("StartDate") 
dt.Columns.Add("EndDate") 
Dim row1 As DataRow = dt.NewRow() 
row1("StartDate") = New DateTime(2009, 1, 1) 
row1("EndDate") = New DateTime(2009, 1, 31) 
dt.Rows.Add(row1) 

Dim myDate As New DateTime(2008, 12, 15) 
Dim rows As DataRow() = dt.[Select]([String].Format("#{0}# >= StartDate AND #{0}# <= EndDate", myDate.ToString("dd MMM yyyy"))) 
+0

哇,這很酷........ – 2009-12-15 13:13:16

4

DataTable.Select方法不支持BETWEEN操作。該操作特定於數據庫引擎。請記住,DataTable是內存中的結構,不一定支持數據庫服務器的所有功能。

DataTable.Select方法支持與DataColumn.Expression相同的過濾器表達式語法。你可以試試下面的表達式來實現同樣的事情(注意我沒有測試過這個!):

myDataTable.Select("#" + myDate + "# >= StartDate AND EndDate <= #" + myDate + "#"); 
0

要當心,首先你必須寫列名,則符合條件並在年底是不言而喻的變量:

myDataTable.Select(**StartDate** =< "#" + myDate + "# AND **EndDate** <= #" + myDate + "#");