使用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