2009-12-15 93 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 + "#");