개발 & 데이터베이스/DB

오라클 해당 날짜 요일 구하기 (TO_CHAR 함수)

K.두부 2022. 8. 20. 18:37
반응형

프로그래밍을 하다보면 해당 날짜에서 요일이 필요한 경우가 생기는데요. 오라클에서는 TO_CHAR 함수를 이용해서 쉽게 해당 날짜의 요일을 알 수 있습니다. 그 방법에 대해서 알아보겠습니다.

 

TO_CHAR(날짜, '포맷');

TO_CHAR 함수를 이용해서 해당 날짜의 요일을 구할 때 사용하는 포맷의 종류는 총 3가지가 있다.

  • day : 일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일
  • dy : 일, 월, 화, 수, 목, 금, 토
  • d : 1 ~ 7 (요일을 숫자로 출력)
SELECT TO_CHAR(SYSDATE, 'DAY')
  FROM DUAL;

# 토요일

SELECT TO_CHAR(SYSDATE, 'DY')
  FROM DUAL;

# 토

SELECT TO_CHAR(SYSDATE, 'D')
  FROM DUAL;

# 7

금일(2022.08.20) 기준으로 검색했을 때 위의 결과가 나온다. 

 

SELECT TO_CHAR(TO_DATE('20200820', 'YYYYMMDD') + LEVEL, 'YYYYMMDD') AS "DATE"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'DAY') AS "DAY"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'DY') AS "DY"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'D') AS "D"
  FROM DUAL
CONNECT BY LEVEL < 8;

CONNECT BY LEVEL 을 이용하면 원하는 날짜로부터 일주일을 출력할 수도 있다. 

 

요일이 영어로 출력돼요.

위의 쿼리를 이용해서 출력했는데 요일이 영어로 출력되는 경우가 생길 수 있다. TO_CHAR의 세번째 인자값을 이용해서 쉽게 해결할 수 있다.

SELECT TO_CHAR(TO_DATE('20200820', 'YYYYMMDD') + LEVEL, 'YYYYMMDD') AS "DATE"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'DAY', 'NLS_DATE_LANGUAGE=korean') AS "DAY"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'DY', 'NLS_DATE_LANGUAGE=korean') AS "DY"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'D') AS "D"
  FROM DUAL
CONNECT BY LEVEL < 8;

TO_CHAR 함수 세번째 인자값에 NLS_DATE_LANGUAGE=korean 을 넣어주면 완료.

 

SELECT TO_CHAR(TO_DATE('20200820', 'YYYYMMDD') + LEVEL, 'YYYYMMDD') AS "DATE"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'DAY', 'NLS_DATE_LANGUAGE=english') AS "DAY"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'DY', 'NLS_DATE_LANGUAGE=english') AS "DY"
     , TO_CHAR(TO_DATE('20220820', 'YYYYMMDD') + LEVEL, 'D') AS "D"
  FROM DUAL
CONNECT BY LEVEL < 8;

반대로 영어로 표시하고 싶다면 NLS_DATE_LANGUAGE=english 을 넣어주면 된다.

반응형