.net
  • datatable
  • 2009-12-08 145 views 4 likes 
    4

    我使用DataTable.Select上的日期范围过滤一个DataTable,我的标准字符串是:DataTable.Select日期格式问题

    "CreatedOn >='03/11/2009 00:00:00' AND CreatedOn <='03/11/2009 23:59:00'" 
    

    该过滤器不返回行(即使我可以看到匹配的行未过滤的数据表)。不过,我注意到,如果我改变标准(注意日/月座):

    "CreatedOn >='11/03/2009 00:00:00' AND CreatedOn <='11/03/2009 23:59:00'" 
    

    DataTable中的过滤器如预期。显然,这似乎是一个日期本地化问题,是否有一种简单的方法来格式化日期以避免此问题?

    回答

    7

    使用标准的ISO格式的日期时间像这样(为11月3日):

    "CreatedOn >='2009-11-03 00:00:00' AND CreatedOn <='2009-11-03 23:59:00'" 
    

    事实上,如果你想在11月3日创建的所有记录,你应该这样做,因为你也想在创造纪录最后一刻,例如二十三时59分30秒:

    "CreatedOn >='2009-11-03' AND CreatedOn < '2009-11-04'" 
    

    有一个快速参考here

    +0

    完美,谢谢。 – Simon 2009-12-08 10:24:15

    2

    看看你是否可以格式化你日期与 “DD MMM YYYY”,而不是 “MM/DD/YYYY”。

    像这样

    dt.Select(String.Format("col >= '{0}'", new DateTime(2008, 12, 11).ToString("dd MMM yyyy"))) 
    
    7

    试试这个:

    string selectString = String.Format("CreatedOn >= '{0}' AND CreatedOn <= '{1}'", 
              startDate.ToString(DateTimeFormatInfo.InvariantInfo), 
              endDate.ToString(DateTimeFormatInfo.InvariantInfo)); 
    dt.Select(selectString); 
    
    相关问题