在以查询字符串开头时比较EntitySQL中的DateTime值

时间:2012-02-02 15:10:35

标签: c# .net entity-framework query-builder entity-sql

我使用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进行比较。

我开始问我这种方法是否可行......

1 个答案:

答案 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'"