代码之家  ›  专栏  ›  技术社区  ›  DomBat

在数据表中使用between。选择

  •  4
  • DomBat  · 技术社区  · 16 年前

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

    基本上,我有一个日期,想在两个日期栏上做一个“介于”操作,如下所示:

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

    其中startdate和enddate是数据表中确实存在的日期列。

    有什么想法吗?

    3 回复  |  直到 8 年前
        1
  •  7
  •   Adriaan Stander    16 年前

    为什么不只用 >= <=

    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")))
    
        2
  •  4
  •   dariom    15 年前

    这个 DataTable.Select 方法不支持 BETWEEN 操作。此操作特定于数据库引擎。记住 DataTable 是内存结构,不一定支持数据库服务器的所有功能。

    这个 数据表。选择 方法支持与相同的筛选表达式语法 DataColumn.Expression . 您可以尝试以下表达式来实现相同的事情(注意,我没有测试过这个!):

    myDataTable.Select("#" + myDate + "# >= StartDate AND EndDate <= #" + myDate + "#");
    
        3
  •  0
  •   Icarus    8 年前

    要小心,首先要写列名,然后写条件,最后写变量:

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