2009-11-04 2 views
3

Как указать дату Значение времени здесь?ObjectQuery, передавая дату и время в параметре Where where

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.

ответ

4

должны работать:

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

Смотрите documentation для получения дополнительной информации о литералах в запросах ESQL.

+0

до сих пор не работает, что дает мне эту ошибку «типы аргументов„Edm.DateTime“и„Edm.String“несовместимы для этой операции, вблизи WHERE предикат, строки 6, столбец. 15.» – Juvil

+0

@ Juvil: Я обновил фрагмент кода, чтобы включить квалификатор DATETIME, который необходим для того, чтобы отличать литералы даты/времени от строковых литералов. – pmarflee

+0

спасибо, я вижу, что это пропало без вести. – Juvil

5

К сожалению, для меня ответ @ pmarflee не работает. Я нашел другое решение, соответствующее MSDN:

дата часть должна иметь формат: YYYY-MM-DD, где YYYY является значение года четыре цифры от 0001 до 9999, ММ месяц между 1 и 12 и DD - это значение дня, которое действительно для данного месяца MM.

время часть должна иметь формат: HH: MM [: SS [.fffffff]], где HH это час значение от 0 до 23, ММ минута значение от 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 1: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); 
+0

@Anatolli Не могли бы вы помочь мне с этим http://stackoverflow.com/questions/22247016/edm-datetime-coversion-javascript –

Смежные вопросы