Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为仅日期时间年份检查添加行筛选器条件_C#_Asp.net_Datatable_Dataview_Rowfilter - Fatal编程技术网

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

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,则需要具体说明,并且可能包括日期、时间

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

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那样手动过滤它,并循环遍历它,然后自己获取。是的,看起来这是唯一的解决方案类型。谢谢。是的,看起来这是唯一的解决方案。非常感谢。