C# 在DataSet.Select()方法的筛选器表达式中使用getdate()
我想知道在过滤器表达式中使用SQL函数(在本例中为getdate())的可能性,如下所述:C# 在DataSet.Select()方法的筛选器表达式中使用getdate(),c#,sql,dataset,C#,Sql,Dataset,我想知道在过滤器表达式中使用SQL函数(在本例中为getdate())的可能性,如下所述: DataTable dataTable = new DataTable(); dataTable.Columns.Add("MyDate", typeof(DateTime)); dataTable.Columns.Add("MyString", typeof(string)); var row = dataT
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())");
有人知道这是否可能吗?
由于某些原因,我无法更改仅计算字符串的原始代码,我需要获取当前日期并在该日期上再添加两天。类似于DATEADD(第2天,[MyDate])
我知道一种方法是更改源代码并创建一个带有日期的文本字符串,如示例2所示
感谢您的帮助。谢谢 您可以查看此链接以检查是否支持类似的功能: 我做了一个快速检查,日期函数似乎不受支持。 我是如何发现这种联系的?我刚刚在谷歌上搜索了您正在使用的api,并首先访问了此链接: 单击带有一个字符串的选择版本,并进入 然后我开始阅读。 我之所以传递这些信息,是因为我认为浏览互联网上已有的内容,知道要查找什么以及如何查找与编程本身一样重要
当然,在您的情况下,您可以使用DateTime.today获取当前日期,并创建一个使用该结果的选择字符串。不要将DateTime.today作为字符串放入select中,这也不会起作用。您可以将
DateTime串联起来。现在到您的筛选器中:
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