1

Oracleの日付は本当に嫌いですが、私がやりたいのは、行が日付と等しいかどうかを見つけるための基本的なクエリだけです(日付の形式は、Oracleテーブルの17-JAN-11です)。Toplink を使用してクエリを作成しようとしています。

私のコードは次のようなものです:

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

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

....

それは常にゼロ行を返します.truncateDate()などを使用する必要があるためだと思いますが、構文がわかりません。誰か助けてくれますか??、Google経由でまともなものが見つからなかったため、この投稿。

更新:これは間違いなく時間と日付に関係があることがわかりました-時間のない行の場合、それ自体の日付だけで、上記のコードは機能しますが、日付値にも時間が含まれている場合は失敗します。

4

2 に答える 2

1

生成されたSQLは何ですか?truncateDate( "DD")は機能するはずです。

于 2011-02-08T14:42:14.023 に答える
1

実際に必要なコードは次のとおりです。

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

エラーメッセージ:

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

書式マスクが正しくないことが原因でした-日付を最も近い日に切り上げる必要があったためです。

于 2011-01-21T10:06:23.757 に答える