比较DataView.RowFilter中的日期?

时间:2010-08-27 13:22:58

标签: c# datetime dataview date-format rowfilter

我正在摸索一些相当愚蠢而又显然很难的东西。

DataView dvFormula = dsFormula.Tables[0].DefaultView;
dvFormula.RowFilter = "'" + startDate.ToString("yyyyMMdd") + "' < EndDate OR EndDate = '19000101'";
dvFormula.Sort = "FromDate ASC";

结果如下:

  

无法执行'&lt;'对System.String和System.DateTime进行操作。

请告诉我解决这个问题的最佳方法是什么。

非常感谢!

3 个答案:

答案 0 :(得分:23)

你需要用#包装日期,而不是撇号。

dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#"; 

答案 1 :(得分:9)

这是解决方案。试试这个:

filter = " (Date >= #" +
         Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
         "# And Date <= #" +
         Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
         "# ) ";

答案 2 :(得分:4)

根据您的数据提供者,您可能需要使用#字符而不是'字符来转义日期。另外,我会以YYYY-MM-DD格式格式化您的日期,以确保它可以被正确识别为日期。