C# 为仅日期时间年份检查添加行筛选器条件
我试图使用DataView.RowFilter来筛选不属于指定年份的所有条目。我的代码如下:C# 为仅日期时间年份检查添加行筛选器条件,c#,asp.net,datatable,dataview,rowfilter,C#,Asp.net,Datatable,Dataview,Rowfilter,我试图使用DataView.RowFilter来筛选不属于指定年份的所有条目。我的代码如下: bigDT.DefaultView.RowFilter = "year(date_posted)=2011"; 然而,这是行不通的。我已经读到,我可以使用像“#mm/dd/yyyy”这样的格式指定日期时间 我更喜欢只检查年份,因为用户可以指定年份,也可以不指定年份、月份或日期等 谢谢。确保文档的列名为“年”,且该列中的字段为文本或日期时间。如果是datetime,则需要具体说明,并且可能包括日期、时间
bigDT.DefaultView.RowFilter = "year(date_posted)=2011";
然而,这是行不通的。我已经读到,我可以使用像“#mm/dd/yyyy”这样的格式指定日期时间
我更喜欢只检查年份,因为用户可以指定年份,也可以不指定年份、月份或日期等
谢谢。确保文档的列名为“年”,且该列中的字段为文本或日期时间。如果是datetime,则需要具体说明,并且可能包括日期、时间等。如果是文本,则应为defaultview.rowfilter=“year=2011”。确保文档的列名为“year”,并且该列中的字段为文本或datetime。如果是datetime,则需要具体说明,可能包括日期、时间等。如果是文本,则应为defaultview.rowfilter=“year=2011”。对datetime有效 你可以这样做
"date_posted > #1/1/2011# AND date_posted < #12/31/2011#"
“发布日期>2011年1月1日”和“发布日期<2011年12月31日”
对日期时间有效
你可以这样做
"date_posted > #1/1/2011# AND date_posted < #12/31/2011#"
“发布日期>2011年1月1日”和“发布日期<2011年12月31日”
我不是说这是一个好方法,但你可以这样做:
bigDT.DefaultView.RowFilter = "CONVERT(SUBSTRING(CONVERT(date_posted, 'System.String'), 5, 4), 'System.Int32')=2012";
这就是将date\u posted
列转换为字符串,提取四位数的日期,将其转换为整数,并将其与2012
进行相等比较。CONVERT
和SUBSTRING
函数记录在中
文档中没有说明,但我想,
CONVERT(date_posted,'System.String')
使用了当前区域性的短日期模式,因此在我的例子中(en-US),年份是字符偏移量5-8。考虑到它的详细程度和它对解析格式化字符串的依赖性,它当然更好,但这是另一种方法,它确实有效。我不是说这是一种好方法,但您可以这样做:
bigDT.DefaultView.RowFilter = "CONVERT(SUBSTRING(CONVERT(date_posted, 'System.String'), 5, 4), 'System.Int32')=2012";
这就是将date\u posted
列转换为字符串,提取四位数的日期,将其转换为整数,并将其与2012
进行相等比较。CONVERT
和SUBSTRING
函数记录在中
文档中没有说明,但我想,
CONVERT(date_posted,'System.String')
使用了当前区域性的短日期模式,因此在我的例子中(en-US),年份是字符偏移量5-8。考虑到它的详细程度和它对解析格式化字符串的依赖性,它当然更好,但这是另一种方法,它确实有效。列名是date\u post,它是一个DateTime对象。没有办法从DateTime对象中提取年份吗?我不确定。只能使用datetime.tostring()将datetime格式化为一年(包含所有格式文本)。阅读网页上的日期时间格式。它应该通过格式化来完成。Datetime很棘手,用户需要非常具体。或者像datetime.year一样手动筛选它,并循环遍历它,然后自己获取。列名是date_posted,它是一个datetime对象。没有办法从DateTime对象中提取年份吗?我不确定。只能使用datetime.tostring()将datetime格式化为一年(包含所有格式文本)。阅读网页上的日期时间格式。它应该通过格式化来完成。Datetime很棘手,用户需要非常具体。或者像datetime.year那样手动过滤它,并循环遍历它,然后自己获取。是的,看起来这是唯一的解决方案类型。谢谢。是的,看起来这是唯一的解决方案。非常感谢。