안녕하세요.
큐브리드 매니저 SELECT 오류 관련 질문을 드립니다.
자료형 TIMESTAMP 의 시간이 '1970-01-01 09:00:00' 으로 되어 있을 때 SELECT 를 할 경우
SELECT * FROM Test_Table;
실행 오류 : -2016
번째 라인 실행 오류
오류 설명:
The argument is invalid
라는 메시지 출력과 함께 오류 발생으로 SELECT 가 되지 않습니다.
다른 자료형 컬럼들을 하나씩 SELECT 할 경우는 잘 되지만 * 로 하거나
TIMESTAMP 컬럼을 SELECT 할 경우는 위와 같은 오류가 발생합니다.
- '1970-01-01 09:00:01' 로 입력할 경우는 잘 됩니다.
- UPDATE, INSERT 잘 됩니다.
- API 함수들을 사용하는것도 잘 됩니다.
- 원래 사용하던 Cubrid Manager R4.0 으로 Cubrid R4.0 조회는 잘 됩니다.
- 0 을 입력 또는 TO_TIMESTAMP 함수를 사용하여 모두 테스트해 봤지만 안됩니다.
- DB 볼륨 호환이 되기 때문에 Cubrid Manager R4.3.3001 (32Bit) 버전으로 R4.0, R4.3 DB 볼륨을
모두 테스트해 봤지만 SELECT 가 되지 않습니다.
위의 사항 이외에 더 필요한 정보가 있으면 답글 부탁드립니다~
수고하세요.
840이하 버전에서는 TIMESTAMP최소값이 GMT로 1970-01-01 00:00:00 였고, 841 이상 버전부터는 GMT로 1970-01-01 00:00:01로 스펙이 변경되었습니다. 한국이 GMT+9니까, 말씀해주신대로 버전 업그레이드 이후 과거 입력된 최소값(~09:00:00)을 조회할 때 에러가 난 것이구요.. (일단 요 이슈는 엔진쪽에 등록을 해야겠어요 ㅠㅠ)
이를 해결하기 위해서 JDBC옵션이 추가되었습니다. (첨부파일참고)
CM에서 데이터베이스 로그인 창에서 > 고급 JDBC옵션 > 옵션설정 > 날짜/시간 0값 처리(zeroDateTimeBehavior) 속성값을 "반환할 타입의 최소값으로 변환" 으로 처리해주시면, 출력될 것입니다.
매뉴얼: http://www.cubrid.com/online_manual/841/api/api_jdbc_programming_connection.htm