2017-03-10 1 views
0

primefaces 달력에서 backing bean으로 날짜를 보내고 있습니다. primeface가 보내는 객체는 Date입니다. eclipselink jql을 사용하여 날짜에서 년, 마운트 및 날짜를 ​​추출합니다.

<p:calendar id="exact_Date" value="#{h.model.arhExactDate}" pattern="yyyy/MM/dd"/> 

디버거의 날짜는 2017 년

내가 (시간 withowt)이 단지 날짜 부분에서 추출과에서 시간 소인과 비교하려는 목 3월 2일 동부 유럽 표준시 00시 00분 0초처럼 보인다 데이터베이스 은 eclipselink jpql을 사용하여 2017-03-02 18 : 57 : 19.152와 같습니다.

다음과 같은 형식이 될 것입니다. cast (2017-03-02 18 : 57 : 19.152 varchar) 2017-03-02 18 다음은 "like"다음 부분이 날짜의 날짜입니다.

basic eclipselink guide에서 보면 다음과 같은 추출 방법을 사용할 수 있습니다. 추출 (연도 from my_date). 그러나 필요한 모든 것을 어떻게 추출 할 수 있습니까?

extract(year,mounth,day from e.reqDate) =:(exactDate) 

내가 좋아하는 뭔가를하지 않으 :

select e from MyEntity e where extract(year from e.reqDate) = :extract(year from exactDate) 

이 일을하면, 내가 좋아하는 뭔가를 좋아 한 것이다 : 나는 아래의 쿼리를 시도했지만 유효한 표현하지

: extract (year from eDreateDate) = : 추출 (exactDate에서 년) 및 추출 (e.reqDate에서 월) = : 추출 (exactDate에서 월) 및 추출 (e.reqDate에서 일) = : 추출 정확한 날짜)

+0

은 EclipseLink 가이드는 형식 "EXTRACT (년, e.startDate)"을 보여줍니다. 너는 다르다. MyEntity e에서 e를 선택 했습니까? (YEAR, e.reqDate) = : year_parameter? 오류 또는 생성 된 SQL은 무엇입니까? – Chris

답변

0

날짜 객체를 전달하고 시간 부분을 제외한 날짜 값만 비교하기 때문에 JPQL에 TruncateDate 또는 TRUNC 옵션 :

"select e from MyEntity e where truncateDate(e.reqDate) = :dateParameter" 

TRUNC는 대부분의 데이터베이스에 주어진하지 않을 경우 년/월/일 paramater의 시간을 제거 기본합니다. 그것은 JPQL의 기능을 사용하여 다른 업체에 액세스 할 수 있습니다

"select e from MyEntity e where FUNCTION('TRUNC', e.reqDate) = :dateParameter" 
0

나는 EclipseLink가이는 JPA 표준 아니지만, 대부분의 JPA 공급자가이를 지원한다는

MONTH(field) 
YEAR(field) 
DAY(field) 

주 다음 공급 업체 확장 JPQL 기능을 지원하기 위해 기대. 해당 공급자 설명서를 확인하십시오. "추출"은 극히 소수의 데이터베이스에서만 SQL에서 작동하는 SQL 함수이므로

관련 문제