代码之家  ›  专栏  ›  技术社区  ›  Azat

按时间在数据视图上放置筛选器

  •  0
  • Azat  · 技术社区  · 15 年前

    如何按时间筛选数据视图/数据表?我有一个包含datetime列的表,需要根据该datetime值内的时间进行筛选。在本机SQL中,这并不难,但在ADO.NET表达式中,这会给我带来困难。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Moe Sisko    15 年前

    如果您希望过滤器完全忽略日期时间的日期组件,那么我认为使用过滤器表达式是不可能的。

    但是,如果按日期和时间过滤都适合您的需要,那么您可以这样做:

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