为“仅日期时间年份”检查添加行筛选器条件

本文关键字:添加行 检查 筛选 条件 日期 时间 | 更新日期: 2023-09-27 18:23:54

我正在尝试使用DataView.RowFilter来筛选不属于指定年份的所有条目。我的代码如下:

bigDT.DefaultView.RowFilter = "year(date_posted)=2011";

然而,这是行不通的。我读到我可以使用类似"#mm/dd/yyyy#"的格式指定DateTimes。

我更愿意只检查年份,因为用户可以指定年份,也可以不指定年份、月份或日期等。

谢谢。

为“仅日期时间年份”检查添加行筛选器条件

DateTime的有效表达式。

你可以做一些类似的事情

"date_posted > #1/1/2011# AND  date_posted <  #12/31/2011#"

我并不是说这是一个好方法,但可以做到这一点的方法是:

bigDT.DefaultView.RowFilter = "CONVERT(SUBSTRING(CONVERT(date_posted, 'System.String'), 5, 4), 'System.Int32')=2012";

这就是将date_posted列转换为字符串,提取四位数的日期,将其转换为整数,并将其与2012进行比较以确定是否相等。CONVERTSUBSTRING函数记录在DataColumn.Expression属性中。

文档中没有说明,但我想CONVERT(date_posted, 'System.String')对您当前的文化使用短日期模式,所以在我的情况下(在美国),年份的字符偏移量为5-8。Anurag Ranjhan的答案当然更好,因为这是多么冗长,而且它依赖于解析格式化的字符串,但这是另一种方法,而且确实有效。

确保文档具有列名"year",并且该列中的字段是文本或日期时间。如果是日期时间,则需要具体说明,并可能包括日期、时间等。如果是文本,则应为defaultview.rowfilter="year=2011"。