DataView.RowFilter ISO8601 - PullRequest
       15

DataView.RowFilter ISO8601

1 голос
/ 16 января 2010

У меня есть DataTable (экземпляр с именем: TimeTable), чей DefaultView (экземпляр с именем: TimeTableView) я пытаюсь использовать для фильтрации по дате. Столбец clock_in содержит строку в формате ISO8601. Я хотел бы выбрать все строки в этом DataTable / DefaultView между 2009-10-08T08: 22: 02Z и 2009-10-08T20: 22: 02Z.

Что бы мне пришлось отфильтровать по этим критериям? Я попробовал:

TimeTableView = TimeTable.DefaultView;    
TimeTableView.RowFilter = "clock_in >= #2009-10-08T08:22:02Z# and #2009-10-08T20:22:02Z#";

Это не работает для меня. Я работаю с неправильным объектом или синтаксис моего фильтра неверный?

1 Ответ

1 голос
/ 16 января 2010

В конце концов я решил это сам.

Чтобы получить конкретную дату:

TimeTableView = TimeTable.DefaultView;
TimeTableView.RowFilter = String.Format("CONVERT(clock_in, System.DateTime) = #{0}#", dayToFilter.ToShortDateString());

Чтобы получить диапазон дат (где A и B - объекты DateTime):

TimeTableView = TimeTable.DefaultView;
TimeTableView.RowFilter = String.Format("CONVERT(clock_in, System.DateTime) >= #{0}# AND CONVERT(clock_in, System.DateTime) <= #{1}#", A.ToShortDateString(), B.ToShortDateString());
...