DataView.RowFilter是ISO8601

时间:2010-01-16 03:49:56

标签: c# datatable iso8601 rowfilter

我有一个DataTable(实例名为:TimeTable),其DefaultView(实例名为:TimeTableView)我试图根据日期进行过滤。列clock_in包含ISO8601格式的字符串。我想在2009-10-08T08:22:02Z和2009-10-08T20:22:02Z之间选择此DataTable / DefaultView中的所有行。

我必须根据此标准过滤什么?我试过了:

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

这对我不起作用。我操作错误的对象还是我的过滤器语法错误?

1 个答案:

答案 0 :(得分:1)

最后我自己解决了。

获取具体日期:

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());