我使用QueryBuilder
如下:
var queryString = String.Format(
"SELECT VALUE e FROM Entity AS e WHERE e.EndDate {0} {1} ",
operator,
DateTime.Today.AddYears(1).ToString("d", DateTimeFormatInfo.InvariantInfo)
);
ObjectQuery<Entity> query = new ObjectQuery<Entity>(queryString, Context);
请注意,我非常简化了这个示例,我的目标是在创建QueryBuilder
实例之前将查询构建为字符串。 (只要这是可能的)
我已经尝试了以下
...DateTime.Today.AddYears(1)...
...DateTime.Today.AddYears(1).ToString()...
...DateTime.Today.AddYears(1).ToString("yyy\MM\dd")...
这都会导致异常,表示我无法将DateTime与String或Int32进行比较。
我开始问我这种方法是否可行......
答案 0 :(得分:5)
在实体中,SQL DateTime literals必须以下列格式表示:
DATETIME'2012-02-02 16:26'
其中日期和时间部分都是必需的。例如:
"SELECT VALUE e FROM Entity AS e WHERE e.EndDate > DATETIME'2012-02-02 16:26'"