ObjectQuery,在Where子句过滤器中传递datetime

时间:2009-11-04 09:16:11

标签: c# objectquery

如何在此处传递日期时间值?

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= 11/4/2009 5:06:08 PM)");

上面的示例代码似乎确实有效。

即使有了这个

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= \"11/4/2009 5:06:08 PM\")");

我在EDM中遇到了类型转换错误。

2 个答案:

答案 0 :(得分:5)

不幸的是,@ pmarflee的答案不起作用。我找到了与MSDN对应的另一个解决方案:

  

日期部分的格式必须为:YYYY-MM-DD ,其中YYYY为四   数字年份值介于0001和9999之间,MM是介于1和之间的月份   12和DD是对给定月份MM有效的日期值。

     

时间部分的格式必须为:HH:MM [:SS [.fffffff]] ,其中HH是   0到23之间的小时值,MM是0到0之间的分钟值   59,SS是介于0和59之间的第二个值,而fffffff是   0到9999999之间的小数秒值。所有值范围均为   包括的。小数秒是可选的。秒是可选的   除非指定小数秒;在这种情况下,秒是   需要。如果未指定秒或小数秒,则   将使用默认值零。

     

DATETIME符号和。之间可以有任意数量的空格   文字有效载荷,但没有新行。

     

DATETIME'2006-10-1 23:11'
DATETIME'2006-12-25 01:01:00.0000000' -   与DATETIME'2006-12-25 01:01'

相同

代码本身:

DateTime dateTimeValue = DateTime.Now;
// ESQL DATETIME format MUST be <yyyy-MM-dd HH:mm> format                                 
_Query = _Query.Where(string.Format("(it.StartDate >= DATETIME'{0:yyyy-MM-dd HH:mm}')",dateTimeValue);

答案 1 :(得分:4)

以下内容应该有效:

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item");
_Query = _Query.Where("(it.StartDate >= DATETIME'11/4/2009 17:06:08')");

有关ESQL查询中文字的更多信息,请参阅documentation