SQL查询在Toplink中查找等于日期的行

时间:2011-01-20 19:25:23

标签: java sql oracle toplink

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

更新:现在我知道它与时间和日期有关 - 对于没有时间的行,只有它自己的日期,上面的代码可以工作,但如果日期值也有时间,那么它就会失败。

2 个答案:

答案 0 :(得分:1)

所需的实际代码是:

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

错误消息:

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

由于格式掩码不正确 - 因为我要求将日期四舍五入到neareset日。

答案 1 :(得分:1)

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