为“仅日期时间年份”检查添加行筛选器条件
本文关键字:添加行 检查 筛选 条件 日期 时间 | 更新日期: 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
进行比较以确定是否相等。CONVERT
和SUBSTRING
函数记录在DataColumn.Expression
属性中。
文档中没有说明,但我想CONVERT(date_posted, 'System.String')
对您当前的文化使用短日期模式,所以在我的情况下(在美国),年份的字符偏移量为5-8。Anurag Ranjhan的答案当然更好,因为这是多么冗长,而且它依赖于解析格式化的字符串,但这是另一种方法,而且确实有效。
确保文档具有列名"year",并且该列中的字段是文本或日期时间。如果是日期时间,则需要具体说明,并可能包括日期、时间等。如果是文本,则应为defaultview.rowfilter="year=2011"。