2011-01-20 22 views
1

真的很討厭Oracle中的日期,但我想要做的只是基本查詢來查找一行或多行是否等於日期(日期格式是Oracle表中的17-JAN-11)。我正在使用Toplink嘗試並形成查詢。SQL查詢找到一個等於Toplink日期的行

我的代碼是這樣的:

ReadAllQuery query = new ReadAllQuery(FooMyTable.class); 
ExpressionBuilder builder = query.getExpressionBuilder(); 

if (dateFoo != null) 
    query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").equal(dateFoo)); 

....

它總是帶回零行,我想它,因爲我應該使用truncateDate()或東西,但我不明白出語法。任何人都可以幫忙??,無法通過谷歌找到任何體面的,因此這張貼。

更新:現在我知道這是肯定與時間和日期有關的事情 - 對於沒有時間的行,只是它自己的日期,上面的代碼工作,但如果日期值也有它的時間,那麼它失敗。

回答

1

需要實際的代碼是:

query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").truncateDate("DD").equal(dateFoo)); 

錯誤消息:

ORA-01898: too many precision specifiers Error Code: 1898 

是由於格式掩碼是不正確 - 我需要有日期四捨五入至neareset一天。

1

什麼是SQL生成的? truncateDate(「DD」)似乎應該工作。