SQL/tibero 티베로 & oracle 오라클

[오라클&티베로] 세션 날짜 형식 오류. Format ends before the entire input string is converted.

삐뚤어진 개발자 2022. 7. 7.

티베로 DB에서 쿼리를 실행하면, 아래와 같이 '날짜 형식의 지정에 불필요한 데이터가 포함되어 있다는 에러가 나온다'

java.sql.SQLException: JDBC-5010:Format ends before the entire input string is converted.

 

 

자칭 개발 20 + 알파 년차  우리 부장님께서, 이 에러로 고생 좀 하셨다고 해서.. 정리해봅니다.

부장님 20년쯤 하셨는데 그 정도시면 그냥 치킨집 차리세요...

  오류 원인

쿼리에 아래와 같은 TO_DATE 변환 함수가 사용되었기 때문인데, 날짜 형식이 YYYYMMDD 'HH24MISS' 와 같이 '시

 분 초' 가 포함되어서 현재 세션의 날짜 형식에서 해석할 수가 없기 때문이다.

TO_DATE(TO_CHAR(SYSTIMESTAMP - (12/24),'YYYYMMDDHH24MISS'),'YYYYMMDDHH24MISS')

 

현재 세션의 날짜 형식은 아래와 같이 조회 해볼수 있다.

   SELECT SYSDATE FROM DUAL;

 

위 쿼리를 실행해보면 아래와 같은 결과를 조회할 수 있다. 날짜 형식이 년,월,일로 되어 있는걸 확인할 수 있다.

아래 쿼리 또한 마찬가지다.

SELECT PARAMETER, VALUE FROM v$NLS_PARAMETERS
 WHERE PARAMETER = 'NLS_DATE_FORMAT';

  수정

   ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';

NLS_DATE_FORMAT의 세션 VALUE  값을 위와같이 변경해준다.

 

 

아래쿼리로 다시 조회해보면, 

   SELECT SYSDATE FROM DUAL;
SELECT PARAMETER, VALUE FROM v$NLS_PARAMETERS
 WHERE PARAMETER = 'NLS_DATE_FORMAT';

다음과 같은 결과값을 얻을 수 있고, 원래 실행하려고 했던 쿼리의 에러도 해결된다.

 

 

 

댓글