ORA-01841 오류 0 4 1,874

by 후인구 [2021.12.01 06:22:47]


SELECT T1, T2, TDAY, TO_CHAR(TO_DATE(TDAY,'YYYYMMDD'),'D')  AS TDAY_WEEK  FROM TEST

WHERE T1 = 'W1' (오류 - ORA-01841)

 

SELECT T1, T2, TDAY, TO_CHAR(TO_DATE(TDAY,'YYYYMMDD'),'D') AS TDAY_WEEK  FROM TEST (오류안남)

 

조회조건만 걸면 ORA-01841: 년은 영이 아닌 -4713 과 +4713 사이의 값으로 지정해야 합니다. 오류가 납니다.

TDAY는 VARCHAR2(8) 입니다.

 

by 마농 [2021.12.01 09:24:10]

에러메시지 그대로 날짜로 변환이 안되는 자료가 있는지 확인해 보시면 됩니다.
전체 자료 조회시 에러가 안나는 이유는 전체 출력된게 아니라 일부만 출력된거라서 그렇습니다.
아직 에러 데이터까지 출력이 안된 상태죠. 스크롤바 계속 내리다 보면 에러를 만나게 됩니다.
 

SELECT tday
  FROM test
     , XMLTABLE('if (. castable as xs:date) then 1 else 0' PASSING tday COLUMNS x NUMBER PATH '.')
 WHERE x = 0
;

 


by 꼬랑지 [2021.12.01 09:26:17]

아마도 T1 = 'W1' 조건에 맞는 TDAY 칼럼 값중 날짜타입에서 허용하지 않는 문자(이를테면 알파벳)가 있는 데이타가 있는 모양입니다.

두번째 쿼리에 오류가 안나는 이유는 단순 SELECT시 기본적으로 100개의 로우만을 조회합니다.

이 100개의 로우중에 오류가 있는 데이타가 안걸려서 정상 작동하는 것으로 보이는 것 같습니다


by 후인구 [2021.12.01 10:45:03]

SELECT T1, T2, TDAY, TO_CHAR(TO_DATE(TDAY,'YYYYMMDD'),'D')  AS TDAY_WEEK  FROM TEST

WHERE T1 = 'W1' 

AND TDAY < '99991231'

이렇게 조회하면 오류가 안나고 정상 조회됩니다


by 마농 [2021.12.01 10:54:14]
-- 오류 자료 조회 되겠네요. --
SELECT t1, t2, tday
  FROM test
 WHERE t1 = 'W1' 
   AND tday > '99991231'
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입