DataTable。选择日期格式问题

时间:2009-12-08 09:54:39

标签: .net 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'"

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

试试这个:

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

答案 2 :(得分:2)

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

类似这样的事情

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