BindingSource按日期过滤
我想根据日期过滤数据库中的值。
数据库中的日期包含如下值:2008-12-28 18:00:00。 我的类有一个DateTime变量,具体取决于我想要过滤的。 理想情况下它会像这样工作: myBindingSource.Filter = "DATE(myDateField) = myDateTime.Date"
+根据需要调整myDateTime.Date格式。
但它抛出一个EvaluateException:“该表达式包含未定义的函数调用DATE()。”
虽然如果我直接执行SQL语句,我可以在filter中使用DATE()函数。
PS我使用MYSQL DB和Connector / Net 5.2
我怎么解决这个问题?
谢谢大家的建议。
不需要getSqlDate函数。 您可以使用String.Format()来格式化日期:
String.Format("{0:yyyy-MM-dd} 00:00:00", myDateTime)
要么
myDateTime.Date.ToString("yyyy-MM-dd") + " 00:00:00"
您可以像这样过滤绑定源:
myBindingSource.Filter = String.Format("myDateField >= '{0:yyyy-MM-dd}' AND myDateField < '{1:yyyy-MM-dd}'", myDateTime, myDateTime.AddDays(1));
谢谢Tom H.
是的,我想消除filter中日期时间的时间部分,你的建议完美无缺。
我将为其他人留下完整的解决方案:
myBindingSource.Filter = "myDateField >= '" + getSqlDate(myDateTime) + "' AND myDateField < '" + getSqlDate(myDateTime.AddDays(1)) + "'";
其中getSqlDate函数是:
string getSqlDate(DateTime date) { string year = "" + date.Year; string month = (date.Month < 10) ? "0" + date.Month : "" + date.Month; string day = (date.Day < 10) ? "0" + date.Day : "" + date.Day; return year + "-" + month + "-" + day + " 00:00:00"; }
对答案的更正:根据msdn ,获取mm的正确日期
yyyy-mm-dd
必须像这样大写;
yyyy-MM-dd
获得格式正确的日期。
myDateField是数据集中字段的名称吗? 我想你想要一个像这样的表达式:
myBindingSource.Filter = "myDateField = " & myDateTime.Date.ToString()
您是否在询问如何消除filter中日期时间的时间部分? 我不太熟悉MySQL,但是如果你使用任何类型的函数返回日期时间的日期部分,那么你可能会杀死在该列上使用索引查询的任何机会(现有或未来的索引)。
最好的办法是在前端创建一个filter,用于检查仅适用于给定过滤日期的范围。 例如:
myBindingSource.Filter = "myDateField >= " &
& " myDateField < " &
很抱歉没有确切的代码,但我是一名SQL开发人员,而我缺乏VB / C#技能需要我花更多的时间来提出function然后它可能会带你。 ?
要在DataGridView中的两个日期之间进行搜索,您可以使用以下代码:
BindingSource1.Filter = "F5 >= '" + maskedTextBox1.Text + "' And " + "F5 <= '" + maskedTextBox2.Text + "'";
BindingSource1:我在BindingSource1中的datagridview datasourc加载。 F5:datagridview中标题列的名称。 maskedTextBox1:获取第一个日期。 maskedTextBox2:获取第二个日期。
成功“Arn_7”
要在DataGridView中的两个日期之间进行搜索,您可以使用以下代码:
上述就是C#学习教程:BindingSource按日期过滤分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
BindingSource1.Filter = "F5 >= '" + maskedTextBox1.Text + "' And " + "F5 <= '" + maskedTextBox2.Text + "'"; BindingSource1 : my datagridview datasourc load in BindingSource1 . F5 : name of your header column in datagridview . maskedTextBox1 : for get first date . maskedTextBox2 : for get second date .
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022185.html