오라클에서 문자열을 날짜형 데이터로 형변환을 하기위해서는 TO_DATE 함수를 사용하면된다.
형식) TO_DATE("문자열", "날짜포맷")
1.오라클에서는 날짜 포맷의 대소문자를 구분하지 않는다. (사실 문자열의 대소문자도 구분하지 않는건 마찬가지지만...)
따라서
'YYYY-MM-DD HH24:MI:SS' → 'yyyy-mm-dd hh24:mi:ss' 로 변경해도 정상적으로 작동한다.
이때 날짜의 시간을 24시간이 아닌 12시간 단위로 하고 싶다면,
hh24:mi:ss → hh:mi:ss 로 변경하면 된다.
SELECT TO_DATE('2023-10-10', 'YYYY-MM-DD')
, TO_DATE('2023-10-10 17:10:00', 'YYYY-MM-DD HH24:MI:SS')
FROM dual
2.
날짜의 구분자를 사용할 수도 사용하지 않을 수도 있다.
SELECT TO_DATE('20231010', 'YYYYMMDD')
, TO_DATE('20231010171000', 'YYYYMMDDHH24MISS')
FROM dual
3.
년/월/일의 위치를 일/월/년 으로 변경하여 사용할 수 있다.
SELECT TO_DATE('2023/10/10', 'YYYY/MM/DD')
, TO_DATE('10/10/2023', 'MM/DD/YYYY')
FROM dual
4.
년도(YYYY)의 포맷을 RR로 사용할 경우 50~99년은 1900년대로, 00~49년은 2000년대로 변환된다.
SELECT TO_DATE('99/10/10', 'RR/MM/DD')
, TO_DATE('22/10/10', 'RR/MM/DD')
FROM dual
5.
TO_DATE 함수를 사용할 때 날짜 포맷 없이 사용할 수 있다.
(하지만 오류가 발생할 수도 있으니 날짜 포맷을 지정할 것을 권장한다.)
발생가능한 오류 => ORA-01861: literal does not match format string (리터럴이 형식 문자열과 일치하지 않음)
SELECT TO_DATE('2023-10-10')
FROM dual
=> 오류가 발생하지 않으려면, 리터럴이 형식 문자열과 일치하면 되는데,
이것은 시스템의 NLS_DATE_FORMAT이 어떻게 설정되어 있는지 확인 후 동일한 형식으로 문자열을 입력하면 오류가 발생하지 않는다.
날짜 문자열이 아닌 값이 존재할 경우 문자열의 날짜 형식을 미리 체크한 후 변환을 해야 오류를 방지할 수 있다.
참고 블로그
[Oracle] 오라클 문자를 날짜로 변환 방법 (TO_DATE)
오라클에서 문자열을 날짜형 데이터로 형 변환을 하기 위해서는 TO_DATE 함수를 사용하면 된다. TO_DATE("문자열", "날짜 포맷") 아래의 예제를 보면 쉽게 이해할 수 있다. SELECT TO_DATE('2021-12-12', 'YYYY-MM
gent.tistory.com
'DB > Oracle' 카테고리의 다른 글
[Oracle] 날짜정보 추출 함수 / EXTRACT (0) | 2023.10.12 |
---|---|
[Oracle] 문자열 형변환 / TO_CHAR 함수 (날짜 포맷, 소수점, 천단위 콤마) (0) | 2023.10.12 |
[Oracle] 최대값, 최소값 구하기 / MAX, MIN (0) | 2023.10.12 |
[Oracle] 오라클 NULL값에 다른 데이터 출력하기 / NVL(), NVL2() (0) | 2023.10.11 |
[Oracle] SELECT문 NULL 값 조회 / IS NULL, IS NO NULL (0) | 2023.10.11 |