【问题标题】:DataTable.Select date format problemDataTable.Select 日期格式问题
【发布时间】:2009-12-08 18:15:16
【问题描述】:

我正在使用 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'"

数据表按预期过滤。显然这似乎是一个日期本地化问题,有没有一种简单的方法来格式化日期以避免这个问题?

【问题讨论】:

    标签: .net datatable


    【解决方案1】:

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

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

    事实上,如果您希望在 11 月 3 日创建所有记录,您应该这样做,因为您还希望在最后一分钟创建记录,例如23:59:30:

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

    有一个快速参考here

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

        【解决方案3】:

        看看您是否可以将日期格式设置为“dd MMM yyyy”而不是“MM/dd/yyyy”。

        类似的东西

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

        【讨论】:

          猜你喜欢
          • 2011-09-20
          • 2014-04-01
          • 1970-01-01
          • 2016-01-25
          • 2013-06-03
          相关资源
          最近更新 更多