Сравнение значений DateTime в EntitySQL при запуске со строки запроса - PullRequest
3 голосов
/ 02 февраля 2012

Я использую 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 со строкой или с Int32.

Я начинаю спрашивать меня, возможно ли это вообще при таком подходе ...

1 Ответ

5 голосов
/ 02 февраля 2012

В Entity SQL Литералы DateTime должны быть выражены в следующем формате:

DATETIME'2012-02-02 16:26'

, где обе части даты и времени являются обязательными.Например:

"SELECT VALUE e FROM Entity AS e WHERE e.EndDate > DATETIME'2012-02-02 16:26'"
...