使用GETDATE()中的DataSet.Select过滤器表达式()方法

问题描述:

我想知道使用SQL函数(在这种情况下GETDATE())在过滤器表达式,的可能性等的一个如下所述:使用GETDATE()中的DataSet.Select过滤器表达式()方法

  DataTable dataTable = new DataTable(); 
      dataTable.Columns.Add("MyDate", typeof(DateTime)); 
      dataTable.Columns.Add("MyString", typeof(string)); 
      var row = dataTable.NewRow(); 
      row[0] = DateTime.Now.AddDays(1); 
      row[1] = "XXX"; 

      dataTable.Rows.Add(row); 

      //Evaluation 

      //Example 1 - IT WORKS 
      //var rows = dataTable.Select("([MyString] = 'XXX') And [MyDate] > #2012/03/03#"); 

      //Example 2 - IT DOESN'T WORK 
      var rows = dataTable.Select("([MyString] = 'XXX') And [MyDate] >= (GETDATE())"); 

有谁知道是否有可能? 由于某些原因,我无法更改仅评估一个字符串的原始代码,我需要获取当前日期并在其上添加更多2天。像DATEADD(day,2,[MyDate])

我知道,一个办法是改变的源代码,并创建一个字符串与日期,如例2

任何帮助表示赞赏。谢谢!

你可以看一下这个链接,以检查是否类似的东西支持: http://www.csharp-examples.net/dataview-rowfilter/

我似乎做一个快速检查和日期功能不被支持。 我是怎么看到这个链接的?我只是用Google搜索你正在使用的API,来到这个链接第一:

https://msdn.microsoft.com/en-us/library/system.data.datatable.select%28v=vs.110%29.aspx

点击选择版本一个字符串,来到

https://msdn.microsoft.com/en-us/library/det4aw50(v=vs.110).aspx

然后我开始阅读。 我传递了所有这些信息,因为我认为浏览互联网上已有的内容,了解要寻找什么以及如何与编程本身一样重要。

你可以在你的情况下做什么当然是使用DateTime.today获取当前日期,并创建一个使用该结果的选择字符串。不要把DateTime.today作为字符串放在你的select中,那也行不通。

你可以串连DateTime.Now到过滤器:

var filter = string.Format("[MyString] = 'XXX' And [MyDate] >= #{0:yyyy-MM-dd}#", DateTime.Now); 
var rows = dataTable.Select(filter); 

如果它需要两天以上后,那么你可以改变DateTime.Now,以DateTime.Now.AddDays(2).Date