Сравнить даты в DataView.RowFilter? - PullRequest
       17

Сравнить даты в DataView.RowFilter?

12 голосов
/ 27 августа 2010

Я ломаю голову над чем-то довольно глупым, но, по-видимому, трудным.

DataView dvFormula = dsFormula.Tables[0].DefaultView;
dvFormula.RowFilter = "'" + startDate.ToString("yyyyMMdd") + "' < EndDate OR EndDate = '19000101'";
dvFormula.Sort = "FromDate ASC";

Результат таков:

Невозможно выполнить операцию '<' для System.String иSystem.DateTime. </p>

Пожалуйста, скажите мне, как лучше всего решить эту проблему.

Очень признателен!

Ответы [ 3 ]

23 голосов
/ 27 августа 2010

Вы должны заключить даты в #, а не в апострофы.

dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#"; 
9 голосов
/ 25 мая 2011

Это решение.Попробуйте это:

filter = " (Date >= #" +
         Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
         "# And Date <= #" +
         Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
         "# ) ";
4 голосов
/ 27 августа 2010

В зависимости от поставщика данных вам может потребоваться экранировать даты с символом # вместо символа '.Кроме того, я отформатировал бы ваши даты в формате YYYY-MM-DD, чтобы обеспечить их правильное распознавание как даты.

...