Filtrando por data com DataTable.RowFilter ignorando tempo
-
19-09-2019 - |
Pergunta
Como eu filtro para registros em um DataTable que são em certa data?
Eu tentei [datecol] = #11 March 2010#
simples e CONVERT([datecol],'System.DateTime') = #11 March 2010#
. Sem sorte.
MSDN: RowFilter Expression Syntax
Solução
[datecol] >= #11 March 2010 00:00# AND [datecol] <= #11 March 2010 23:59:59#
Solução
select
...
...
...
where [datecol] between '11 March 2010 00:00:00' and '11 March 2010 23:59:59'
Desculpe, cabeça errada. Apenas sido escrever um monte de SQL !!
Tente este
[datecol] >= #03/11/2010 00:00:00# AND [datecol] <= #03/11/2010 23:59:59#
ou
[datecol] >= '03/11/2010 00:00:00' AND [datecol] <= '03/11/2010 23:59:59'
Outras dicas
select * from [X] WHERE DATEDIFF(dd,[datecol],'3/11/2010') = 0
Há uma grande quantidade de energia com a função datediff,
DATEADD(DAY,DATEDIFF(DAY,0,[datecol]),0)
é uma outra maneira você pode tira a parte do tempo a partir da coluna, se você precisa que os dados para outro processamento. Usamos este se nós estamos esperando para agrupar os itens que ocorrem durante o dia, ou alguns outros usos se precisamos para agrupar os itens que ocorrem durante horas ou depois de horas.
Você pode usar o seguinte código LINQ para filtrar DataTable linha-set acordo com a data:
var resultSet = from tbl in dt.AsEnumerable()
where tbl.Field<DateTime>("ColName").ToString("dd/MMM/yyyy") == "07/Aug/2010"
select tbl;
Além disso, para obter o insight de consultas básicas LINQ em DataTables ver o post Filtering DataTable usando o LINQ
melhores Rgds