2011-01-20 7 views
1

Oracleでの日付は本当に嫌いですが、やりたいことは、日付に等しい行(日付の形式Oracleの表の17-JAN-11です)。私はToplinkを使ってクエリを作成しようとしています。Toplinkの日付と等しい行を見つけるためのSQLクエリ

私のコードは次のようである:

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

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

....

それは常にゼロの行に戻しますと、私はその私がtruncateDateを(使用する必要がありますので、推測する)か何かが、私は理解できません構文を外してください。誰も助けることができますか??、Googleを介してまともなことが見つかりませんでしたので、この投稿。

UPDATE:時刻と日付には間違いなく何かがあることがわかりました。時間のない行、それ自体の日付、上のコードは機能しますが、日付値にも時間がある場合は失敗します。

答えて

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")はうまくいくようです。

関連する問題