최근에 SQL로 DATA 타입을 변경하면서 에러 "ORA-01839: date not valid for month specified" , ORA-01839 : "지정된 월에 대한 날짜가 부적합합니다"에 발생하였는데요, 왜 발생했는지 정리해 보겠습니다.
ORA-01839 에러 발생이유?
에러 내용에서도 알 수 있듯이 날짜(DATE)를 변경할 때 발생하는 에러이다. 올바르지 않은 날짜 형식을 입력하거나 연산을 잘못하는 경우 발생합니다.
[예시]
SELECT * FROM EMP_TABLE;
UPDATE EMP_TABLE SET HIRE_DATE = TO_DATE('20250229','YYYYMMDD') WHERE EMP_ID = '1';
저의 경우에는 특정 직원의 고용일자를 변경하는 중, 실제로 있지 않은 날짜로 UPDATE 하는 과정에서 발생하였습니다.
이 처럼 날짜 연산을 진행할 때 날짜 형식에 맞지 않게 연산을 진행하는 경우 발생합니다.
해결방법
보통 ORA-01839 에러에 대한 해결방법은 날짜 함수를 이용해서 연산을 진행하면 대부분 해결된다.
[SQL 함수] 날짜형 함수 :: 자주 사용하는 날짜형함수(SYSDATE, ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, ROUND, TRUNC
오늘은 SQL 작성 시 자주 사용되는 날짜형 함수를 살펴보겠습니다! 날짜형 함수란? 날짜, 즉 데이터형이 DATE나 TIMESTAMP인 데이터를 대상으로 연산을 수행하는 함수를 말합니다! 대표적인 날짜형
godsu94.tistory.com
위에 함수들을 참고해서 진행하면 된다.
하지만,, 나의 경우 없는 날을 입력해야 하는 상황이어서 해결방법은 DATE 필드의 날짜를 "20250228"처럼 실제 있는 날짜로 변경하거나, EMP_TABLE의 HIRE_DATE 타입을 VACHAR(문자열)로 변경해서 입력하는 방법뿐이었다.
'💻 IT > 📌 DataBase' 카테고리의 다른 글
[SQL] ORACLE 난수 생성방법 정리! 문자열, 숫자 랜덤 생성 (0) | 2025.02.09 |
---|---|
[DB/SQL] ORACLE LAG,LEAD 함수 사용법 정리 (이전, 다음값) (1) | 2024.11.12 |
[DB/SQL] 날짜, 시간 형식 표현하는 법 | TO_CHAR로 표현 (3) | 2024.09.04 |
[DB/SQL] ORACLE LISTAGG 함수 사용법 정리 | 행을 열로 바꾸기 (1) | 2024.09.01 |
[DB/SQL] ORACLE NVL 함수 사용법 정리 (0) | 2024.08.30 |