2013-01-14 81 views
1

我在表中有一個字段並存儲日期。我想選擇所有記錄中的日期是一天5JPA 2標準日期從日期

我得到下面的代碼了大量的研究後:

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 

是否有其他方法可以做到這一點?

感謝

回答

-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; 

上面會輸出星期一

希望有所幫助。

+0

謝謝,但它不是我問。 – javando

+0

我可以看到你對它進行了排序,另一種方法是編寫一個小程序來計算一週中的某一天,例如在java中你可以做Calendar c = Calendar.getInstance(); c.setTime(yourDate); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); – justMe

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");