使用DataTable.RowFilter按日期过滤,同时忽略时间

时间:2010-03-11 16:37:40

标签: c# datetime datatable sql-server-ce rowfilter

如何过滤特定日期的DataTable上的记录?

我尝试过普通[datecol] = #11 March 2010#CONVERT([datecol],'System.DateTime') = #11 March 2010#。没有运气。

MSDN: RowFilter Expression Syntax

解决方案

[datecol] >= #11 March 2010 00:00# AND [datecol] <= #11 March 2010 23:59:59#

3 个答案:

答案 0 :(得分:4)

select 
   ...
   ...
   ...

where [datecol] between '11 March 2010 00:00:00' and '11 March 2010 23:59:59'
抱歉,错了。刚写了很多SQL !!

试试这个

[datecol] >= #03/11/2010 00:00:00# AND [datecol] <= #03/11/2010 23:59:59# 

 [datecol] >= '03/11/2010 00:00:00' AND [datecol] <= '03/11/2010 23:59:59' 

答案 1 :(得分:1)

select * from [X] WHERE DATEDIFF(dd,[datecol],'3/11/2010') = 0

使用datediff功能有很多权力,

DATEADD(DAY,DATEDIFF(DAY,0,[datecol]),0)是另一种可以从列中删除时间部分的方法,如果您需要该数据进行其他处理。如果我们想要对白天发生的项目进行分组,或者我们需要对在小时或小时后发生的项目进行分组,我们会使用此方法。

答案 2 :(得分:1)

您可以使用以下LINQ代码根据日期过滤DataTable行集:

var resultSet = from tbl in dt.AsEnumerable()
                where tbl.Field<DateTime>("ColName").ToString("dd/MMM/yyyy") == "07/Aug/2010"
                select tbl;

此外,要了解DataTables上的基本LINQ查询,请参阅帖子Filtering DataTable using LINQ

最好的Rgds