我觉得这很简单,但显然不是!
基本上,我有一个约会,并希望在两个日期列上做'之间',如下所示:
myDataTable.Select(myDate & " between (StartDate and EndDate)")
StartDate和EndDate是DataTable中存在的日期列.
有任何想法吗?
为什么不使用> =和<=
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")))
该DataTable.Select
方法不支持该BETWEEN
操作。此操作特定于数据库引擎。请记住,它DataTable
是内存中的结构,并不一定支持数据库服务器的所有功能。
该DataTable.Select
方法支持与相同的过滤器表达式语法DataColumn.Expression
。您可以尝试使用以下表达式来实现相同的目的(请注意,我尚未对此进行测试!):
myDataTable.Select("#" + myDate + "# >= StartDate AND EndDate <= #" + myDate + "#");