按时间对DataView过滤

时间:2010-03-30 13:47:22

标签: .net ado.net

如何按时间过滤DataView / DataTable?我有一个带有datetime列的表,我需要按照该datetime值内的时间进行过滤。在原生SQL中,它并不是那么难,但在ADO.NET表达式中它对我来说很难。

1 个答案:

答案 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” 在过滤器中。