问题
I am scratching my head over something rather stupid yet apparently difficult.
DataView dvFormula = dsFormula.Tables[0].DefaultView;
dvFormula.RowFilter = "'" + startDate.ToString("yyyyMMdd") + "' < EndDate OR EndDate = '19000101'";
dvFormula.Sort = "FromDate ASC";
The result is this:
Cannot perform '<' operation on System.String and System.DateTime.
Please tell me what the best way to solve this problem would be.
Much appreciated!
回答1:
You need to wrap your dates with #, not apostrophes.
dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#";
回答2:
This is the solution. Try this:
filter = " (Date >= #" +
Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
"# And Date <= #" +
Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
"# ) ";
回答3:
Depending on your data provider, you may need to escape dates with the #
character rather than the '
character. In addition, I would format your dates in the format YYYY-MM-DD
to ensure it can be recognized as a date correctly.
来源:https://stackoverflow.com/questions/3584571/compare-dates-in-dataview-rowfilter