真的很讨厌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 找不到任何像样的东西,因此发布了此帖子。
更新:现在我知道这肯定与时间和日期有关 - 对于没有时间的行,它自己只是一个日期,上面的代码可以工作,但是如果日期值也有一个时间,那么它就会失败。
最佳答案
实际需要的代码是:
query.setSelectionCriteria(builder.getField("REQUEST_CREATED_DATE").truncateDate("DD").equal(dateFoo));
错误信息:
ORA-01898: too many precision specifiers Error Code: 1898
是由于格式掩码不正确 - 因为我需要将日期四舍五入到最近的日期。
关于java - SQL 查询查找与 Toplink 中的日期相等的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4751554/