从日期开始的JPA 2标准日

时间:2013-01-14 15:59:27

标签: oracle select jpa-2.0

我在表格中有一个字段并存储日期。我想选择日期为第5天的所有记录。

经过大量研究后,我得到了以下代码:

    Predicate dayValue = cb.equal(cb.function("day", Integer.class, test.<Date>get(Test_.dateInit)), now.get(Calendar.DAY_OF_MONTH) );

但是,我正在使用Oracle数据库而且它没有功能日:

[EL Warning]: 2013-01-14 11:51:08.001--UnitOfWork(23011228)--Thread(Thread[main,5,main])--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-00904: "DAY": invalid identifier

还有其他方法可以选择吗?

由于

2 个答案:

答案 0 :(得分:1)

我有办法。

在函数方法中使用oracle的to_char函数:

Predicate dayValue = cb.equal(cb.function("to_char", Integer.class, test.<Date>get(Test_.dateInit),cb.parameter(String.class, "dayFormat")), now.get(Calendar.DAY_OF_MONTH) );
...
q.setParameter("dayFormat", "DD");

答案 1 :(得分:-1)

在Oracle中,您可以使用

select to_char (date '2013-01-14', 'D') d from dual;

给你一个天数,上面会输出一个星期一

如果你想看周一只是改为

select to_char (date '2013-01-14', 'Day') d from dual;

以上将于周一输出

希望有所帮助。