在DataTable.Select中使用BETWEEN

5

我认为这很简单,但显然并不是!

基本上,我的一项任务是在两个日期列之间进行“between”操作,如下所示:

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

StartDate和EndDate是DataTable中存在的日期列。

有什么想法吗?

3个回答

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")))

我使用myDate.toString("O")来生成符合ISO标准的通用日期格式,不依赖于当前文化。VB在执行选择时会将其转换回日期 - 而对于"dd MM yyyy",我总是不确定它何时将02 03 2000转换为3月2日,何时转换为2月3日。 - user783388

5
DataTable.Select方法不支持BETWEEN操作。这个操作是特定于数据库引擎的。请记住,DataTable是一个内存构造,不一定支持数据库服务器的所有功能。 DataTable.Select方法支持与DataColumn.Expression相同的过滤表达式语法。您可以尝试以下表达式来实现相同的功能(请注意,我还没有测试过!)。
myDataTable.Select("#" + myDate + "# >= StartDate AND EndDate <= #" + myDate + "#");

0

注意,首先您必须编写列名称,然后是条件,最后是变量:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接