2013-05-14 2 views
0

Как я могу построить предложение Where объекта ObjectQuery, где я буду запрашивать только часть времени только столбца DateTime? Я пробовал следующее, но он не работает. Я получаю недопустимое исключение в Convert.ObjectQuery, передавая время в Where where

ObjectQuery<Item> _Query = ItemEntities.CreateQuery<Item>("Item"); 
_Query = _Query.Where("Convert(VARCHAR,it.START_TIME,114) > '{0}'", startTime.TimeOfDay); 

Кроме того, я использую Oracle как базу данных. Поэтому я попробовал to_char вместо конвертировать, и все же я получаю ту же ошибку.

Спасибо.

+0

[Сравнение времени Oracle] (http://stackoverflow.com/questions/9625323/oracle-time-comparisons)? – James

+0

Моя проблема заключается в построении запроса. Поскольку я использую ObjectQuery для извлечения данных из базы данных, мне нужно, как получить часть TIME. START_TIME (который является столбцом даты и времени). Я попробовал _Query.Where («TO_CHAR (it.START_TIME,« hh24: mi: ss ») ... но я также получаю исключение. – spiritqueen

+0

Добавить исключение, которое вы получаете. –

ответ

0

Вы должны иметь возможность получить временную часть с даты, используя TO_CHAR, а затем преобразовать ее в системный тип, например.

TO_DATE(TO_CHAR(it.START_TIME,'HH24:MI:SS'), 'hh24:mi:ss') from dual 

Если ObjectQuery не поддерживает TO_CHAR вы попробуйте использовать Extract и построить время вручную, например,

TO_DATE(EXTRACT(HOUR FROM it.START_TIME) || ':' || EXTRACT(MINUTE FROM it.START_TIME) || ':' || EXTRACT(SECOND FROM it.START_TIME) FROM DUAL, 'HH24:MI:SS'); 
+0

Моя проблема в том, что ObjectQuery не распознает TO_CHAR как допустимый тип или функцию. – spiritqueen

+0

@ Kathleen см. обновление. – James