1

我在表格中有一个字段,它存储了一个日期。我想选择日期为第 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

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

谢谢

4

2 回答 2

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");
于 2013-01-14T16:38:13.947 回答
-1

在 Oracle 中,您可以使用

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

给你天数,上面将输出 1 表示星期一

如果你想看星期一就换成

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

以上将在星期一输出

希望有帮助。

于 2013-01-14T16:27:24.850 回答