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() 或其他东西,但我无法弄清楚语法。任何人都可以帮忙吗??,通过谷歌找不到任何像样的东西,因此这个帖子。

更新:现在我知道这肯定与时间和日期有关 - 对于没有时间的行,只是一个日期,上面的代码有效,但如果日期值也有时间,那么它会失败。

4

2 回答 2

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 回答
1

生成的 SQL 是什么?truncateDate("DD") 似乎应该可以工作。

于 2011-02-08T14:42:14.023 回答