database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39379 게시물 읽기
No. 39379
두 쿼리의 차이점??
작성자
최인수
작성일
2012-04-05 11:45ⓒ
2012-04-05 13:16ⓜ
조회수
5,023

쿼리 1.

 

SELECT * FROM (
SELECT
TRUNC(TO_DATE(A.REG_DT, 'yyyyMMdd') - TO_DATE(TO_CHAR(SYSDATE, 'yyyyMMdd'), 'yyyyMMdd')) AS DATE_DIFF
FROM
TB_AA A, TB_BB B
WHERE
A.SEQ = B.SEQ
);

 

쿼리 2.

 

SELECT * FROM (
SELECT
TRUNC(TO_DATE(A.REG_DT, 'yyyyMMdd') - TO_DATE(TO_CHAR(SYSDATE, 'yyyyMMdd'), 'yyyyMMdd')) AS DATE_DIFF
FROM
TB_AA A, TB_BB B
WHERE
A.SEQ = B.SEQ
) WHERE DATE_DIFF > 0;

 

 

쿼리 1의 경우 정상적으로 데이터가 나오는데
2의 경우 ORA-01839: date not valid for month specified 에러가 발생합니다.
실제로 a.reg_dt를 substr로 년, 월, 일을 다 select 해봐도 오라클 날짜에서 벗어나지 않는데
왜 2의 경우 위의 에러가 발생하는지 모르겠습니다.
답변주시는 분들께 미리 감사드립니다.


 

결론.
데이터를 다 뒤져보니 09-31에 해당하는 REG_DT가 존재하네요. 아...이런;;;
어제까지만 하더래도 정상이었다 오늘 갑자기 에러나는 것을 보니 
누군가 업데이트를 잘못한 것 같습니다.
감사합니다.

이 글에 대한 댓글이 총 3건 있습니다.

 A.REG_DT 값에 분명 월에 맞지 않는 값이 들어 있지 않을까요?

김선엽(sunyoupk)님이 2012-04-05 12:05에 작성한 댓글입니다.

토드를 예로 들면.

토드는 쿼리 결과를 500개씩 보여줍니다.

일단 500개 보여주고 스크롤 내리면 다시 또 500개 추가로 가져오죠.

1번 쿼리가 에러 안나는 이유는 500개 데이터 중에는 에러데이터가 없어서 입니다.

스크롤 내리다 보면 결국 에러 발생할 것입니다.

2번 쿼리는 등록일자는 현재시간보다 당연히 작겠죠.

작은거에서 큰거 빼면 0보다 작은 수가 나오지요.

결국 결과가 하나도 없으리라 예상이 되구요.

1번은 일단 조건 없이 500개를 가져오지만

2번은 조건 비교를 위해 전체 자료를 읽어 조건을 비교하게 됩니다.

마농(manon94)님이 2012-04-05 12:36에 작성한 댓글입니다.

 A.REG_DT 에 Null값이 나 잘못된 값이 있는경우 같네요

데이터 확인해보세요

창구루송님이 2012-04-05 15:40에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39382한글컬럼명 Pro*c Precompile
손영우
2012-04-05
4139
39381쿼리 좀 도와주세요. 도무지 가닥이 안 잡히네. [2]
서정욱
2012-04-05
4125
39380순차적으로 삭제 해야하는 데이터의 쿼리 만들기 질문입니다.
쿼리 초보
2012-04-05
4248
39379두 쿼리의 차이점?? [3]
최인수
2012-04-05
5023
39377차감(?) 쿼리 질문입니다. [2]
초보
2012-04-04
4336
39376오라클 쿼리 질문드립니다 [1]
진현철
2012-04-04
3827
39374차수 구하는 쿼리 단순하게 할 수 없을까요. [1]
김정묵
2012-04-02
5418
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다