[Oracle] 오라클 다양한 날짜 / 시간 포맷 변경 (TO_CHAR) 사용법 & 예제

쿼리문을 짜다보면 원하는 날짜와 시간의 형태를 뽑아내고 싶을 경우가 많습니다. 오라클에서 날짜 포맷의 변환은 TO_CHAR함수를 활용하여 변경하실 수 있습니다.

 

다양한 날짜 / 시간 포맷

SELECT

--날짜 포맷
TO_CHAR(SYSDATE,'YYYYMMDD'),--20191130
TO_CHAR(SYSDATE,'YYYY-MM-DD'),--2019-11-30
TO_CHAR(SYSDATE,'YYYY/MM/DD'),--2019/11/30
TO_CHAR(SYSDATE,'YYYY'),--2019
TO_CHAR(SYSDATE,'YY'),--19
TO_CHAR(SYSDATE,'MM'),--11
TO_CHAR(SYSDATE,'MON'),--11월
TO_CHAR(SYSDATE,'D'),--7 (주중의 일을 1~7로 표시(일요일 = 1)
TO_CHAR(SYSDATE,'DD'),--30
TO_CHAR(SYSDATE,'DDD'),--334 (1년기준 일 수)
TO_CHAR(SYSDATE,'DAY'),--토요일 (요일 표시)
TO_CHAR(SYSDATE,'DY') --토 (요일을 한자리로 표시)
TO_CHAR(SYSDATE,'WW'), -- 48 (일년 기준 주를 00 ~ 53 형태로 표시)
TO_CHAR(SYSDATE,'W') -- 5 (한달 기준 몇번째 주)
TO_CHAR(SYSDATE,'DL'),--2019년 11월 30일 토요일

--사간 포맷
TO_CHAR(SYSDATE,'AM'),--오전
TO_CHAR(SYSDATE,'PM'),--오후
TO_CHAR(SYSDATE,'HH'), --10 (시간을 0 ~ 12 형태로 표시)
TO_CHAR(SYSDATE,'HH24'), --20 (시간을 0 ~ 24 형태로 표시)
TO_CHAR(SYSDATE,'MI'), --03 (분을 00 ~ 59 형태로 표시)
TO_CHAR(SYSDATE,'SS') --10 (초을 01 ~ 59 형태로 표시)

--세기 포맷
TO_CHAR(SYSDATE,'CC'), --21 (세기)
TO_CHAR(SYSDATE,'BC'), --서기

FROM DUAL

현시간 글을 쓰는 기준시간은 19/11/30 22:03:10.218000000 +09:00 입니다. 위와 같이 오라클에서 날짜 포맷팅을 하는 방법은 TO_CHAR함수를 사용하여 특정 FORAMT에 맞춰 출력할 수 있습니다. 사용법은 TO_CHAR(숫자 or 날짜 ,FORMAT) 형태로 사용하시면 됩니다. 매개변수로는 숫자 혹은 날짜가 올 수 있고 리턴되는값은 CHAR(문자)입니다.

 

오라클 기본 데이터 포맷 설정

--기본 데이터 포맷 조회
SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT'

--기본 데이터 포맷 변경
 ALTER SESSION SET NLS_DATE_FORMAT = [변경할 포맷]

오라클 기본 데이터 포맷을 변경하는 방법은 위와 같습니다. 하지만 위의 쿼리문을 활용하여 변환을 하더라도 세션에 적용되는 것이므로 세션이 날아갔을 경우 다시 초기화되는 현상이 발생하니 주의하셔야 합니다. 영구적으로 변환하시고 싶으시다면 DB툴 환경설정에 가셔서 바꾸시는 방법이 가장 좋습니다.

댓글

Designed by JB FACTORY