2013-05-14 72 views
0

如何構造ObjectQuery的Where子句,我將僅查詢DateTime列的Time部分?我試過以下,但它不起作用。轉換時出現無效的異常。ObjectQuery,在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 time comparisons](http://stackoverflow.com/questions/9625323/oracle-time-comparisons)? – James 2013-05-14 11:20:46

+0

我的問題是在查詢的構造。由於我使用ObjectQuery從數據庫檢索數據,因此我需要如何獲取它的TIME部分.START_TIME(這是一個日期時間列)。我試過_Query.Where(「TO_CHAR(it.START_TIME,'hh24:mi:ss')...但我也得到一個異常。 – spiritqueen 2013-05-14 11:26:57

+0

添加一個異常,你得到。 – 2013-05-14 11:33:54

回答

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 2013-05-14 11:45:03

+0

@Kathleen請參閱更新。 – James 2013-05-14 11:54:05