2013-09-16 3 views
0

우리는 ojdbc14_10.1.0.2.jar와 Java/J2EE 애플리케이션 (JDBC를 직접 사용)과 JDK5를 사용하고 있지만 ojdbc5-11.2.0.3.jar로 마이그레이션하려고 시도했을 때 일부 sql 요청과 관련된 문제가 발생했습니다 (jdbc)가 더 이상 작동하지 않습니다.OJDBC 14 implicite 날짜 변환?

의사의 SQL 요청은 다음과 같습니다 날짜

select * 
from quotas q 
where q.datdeb<='2013-09-05' and q.datfin>='2013-09-05' 
and q.datdeb is not null and q.datfin is not null order by ....; 

NLS 매개 변수는 다음과 같습니다 DD/MM은/RR 날짜 형식이 요청의 매개 변수로 제공와 호환되지 않습니다

.

ojdbc14를 사용할 때 모든 것이 잘 작동했습니다. 분명히 날짜에 대한 implicite 변환을 수행합니다. 64 비트

감사합니다 -

는 내용은 오라클 데이터베이스 11g 릴리즈 11.2.0.3.0이다.

답변

0

문제를 해결하기 위해 적절한 날짜 마스크가있는 to_date 함수를 사용해야한다고 생각합니다.

select * 
from quotas q 
where q.datdeb<=to_date('2013-09-05','yyyy-mm-dd') and q.datfin>=to_date('2013-09-05', 'yyyy-mm-dd') 
and q.datdeb is not null and q.datfin is not null order by ....; 
+0

이 좋은 솔루션입니다 물론 네,하지만 난 자바/J2EE 애플리케이션은 날짜와 같은 매개 변수를 사용하여 SQL 요청이 많이 포함되어 있음을 언급하는 것을 잊었다 때문에 영향은 거대하고 큰 회귀 위험이있다 . 응용 프로그램이 Apache Tomcat에서 실행 중이기 때문에 암시 적으로 sql date 인수를 Oracle로 보내기 전에 변환 할 수있는 Tomcat 인수가 있습니까? –

+0

quotas.datdeb, quotas.datfin의 데이터 유형은 무엇입니까? 또한 매개 변수는 날짜 또는 문자열입니까? – Brian

+0

quotas.datdeb, quotas.datfin은 데이터베이스의 날짜이며 give 매개 변수도 날짜 (java.util.Date)이므로 Java/J2EE 응용 프로그램에서는 YYYY-MM-DD로 변환되지만 데이터베이스는 DD/MM/RR 형식 날짜. 그래서 우리는 OJDBC14를 사용할 때 문제가 없었습니다 (OJDBC14가 암시 적으로 SQL 인수 날짜를 변환 한 것 같습니다).하지만 OJDBC5로 마이그레이션하면이 문제가 발생하기 시작합니다. –