如何按时间过滤DataView / DataTable?我有一个带有datetime列的表,我需要按照该datetime值内的时间进行过滤。在原生SQL中,它并不是那么难,但在ADO.NET表达式中它对我来说很难。
答案 0 :(得分:1)
如果您希望过滤器完全忽略DateTime的日期组件,那么我认为这不可能通过使用过滤器表达式来实现。
但是,如果按日期和时间过滤都符合您的需求,那么您可以执行以下操作:
DataTable dt = new DataTable("t1");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("DT", typeof(DateTime));
dt.Rows.Add(new object[] {1, new DateTime(2009, 1, 1, 14, 56, 27, 123)});
DateTime startDT = new DateTime(2009, 1, 1, 14, 56, 27, 123);
DateTime endDT = new DateTime(2009, 1, 1, 14, 56, 28, 123);
string filter = string.Format(
"DT >= '{0:yyyy-MM-ddTHH:mm:ss.fffffff}' AND DT <= '{1:yyyy-MM-ddTHH:mm:ss.fffffff}'",
startDT, endDT);
DataView dv = new DataView(dt, filter, null, DataViewRowState.CurrentRows);
MessageBox.Show("Num Rows selected : " + dv.Count.ToString());
请注意使用ISO日期/时间格式:“yyyy-MM-ddTHH:mm:ss.fffffff” 在过滤器中。