Фильтрация по дате с помощью DataTable.RowFilter, игнорируя время
-
19-09-2019 - |
Вопрос
Как отфильтровать записи в DataTable, относящиеся к определенной дате?
Я пробовал простой [datecol] = #11 March 2010#
и CONVERT([datecol],'System.DateTime') = #11 March 2010#
.Безуспешно.
MSDN:Синтаксис выражения RowFilter
Решение
[datecol] >= #11 March 2010 00:00# AND [datecol] <= #11 March 2010 23:59:59#
Решение
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'
Другие советы
select * from [X] WHERE DATEDIFF(dd,[datecol],'3/11/2010') = 0
Функция dateiff обладает огромной мощью,
DATEADD(DAY,DATEDIFF(DAY,0,[datecol]),0)
это еще один способ удалить временную часть из столбца, если эти данные нужны вам для другой обработки.Мы используем это, если хотим сгруппировать события, происходящие в течение дня, или для других целей, если нам нужно сгруппировать элементы, происходящие в часы или после закрытия.
Вы можете использовать следующий код LINQ для фильтрации набора строк DataTable по дате:
var resultSet = from tbl in dt.AsEnumerable()
where tbl.Field<DateTime>("ColName").ToString("dd/MMM/yyyy") == "07/Aug/2010"
select tbl;
Кроме того, чтобы получить представление об основных запросах LINQ к DataTables, см. сообщение Фильтрация DataTable с использованием LINQ
лучшие рекомендации