oracle 날짜 관련 쿼리 모음

■ 날짜의 요일을 한글, 영문 등으로 출력

SELECT SYSDATE
     , TO_CHAR(SYSDATE, 'Day Month DD, YYYY', 'NLS_DATE_LANGUAGE=ENGLISH') AS A1
     , TO_CHAR(SYSDATE, 'dy month dd, YYYY', 'NLS_DATE_LANGUAGE=ENGLISH') AS A2
     , TO_CHAR(SYSDATE, 'DY MONTH DD, YYYY', 'NLS_DATE_LANGUAGE=ENGLISH') AS A3
     , TO_CHAR(SYSDATE, 'Day Month DD, YYYY', 'NLS_DATE_LANGUAGE=KOREAN') AS A1
     , TO_CHAR(SYSDATE, 'dy month dd, YYYY', 'NLS_DATE_LANGUAGE=KOREAN') AS A2
     , TO_CHAR(SYSDATE, 'DY MONTH DD, YYYY', 'NLS_DATE_LANGUAGE=KOREAN') AS A3
  FROM DUAL;

 
 
 

■ 해당 월의 마지막 일자

SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD') LAST_DAY1
     , TO_CHAR(LAST_DAY(TO_DATE('201707','YYYYMM')),'YYYYMMDD') LAST_DAY2
     , TO_CHAR(LAST_DAY(TO_DATE('20170723','YYYYMMDD')),'YYYYMMDD') LAST_DAY3
  FROM DUAL;

 
 
 

■ 해당 월의 전체 일자 리스트

SELECT TO_CHAR(TO_DATE('20170201', 'YYYYMMDD')+LEVEL-1, 'YYYY-MM-DD') AS X
  FROM DUAL
CONNECT BY LEVEL <= (TO_DATE('20170228', 'YYYYMMDD')-TO_DATE('20170201', 'YYYYMMDD')+1);

 
 
 

■ 특정 월 전체 일자(예:201707)

SELECT TO_CHAR(TO_DATE(X.START_DT, 'YYYYMMDD')+LEVEL-1, 'YYYY-MM-DD') AS X
  FROM (SELECT '201707'||'01'           AS START_DT
             , TO_CHAR(LAST_DAY(TO_DATE('201707','YYYYMM')),'YYYYMMDD')
                                    AS END_DT
          FROM DUAL) X
CONNECT BY LEVEL <= (TO_DATE(X.END_DT, 'YYYYMMDD')-TO_DATE(X.START_DT, 'YYYYMMDD')+1)

 
 
 

■ 해당 월의 전월

SELECT TO_CHAR(TO_DATE('201301', 'YYYYMM') -1, 'YYYYMM') FROM DUAL;

 
 
 

■ 이전달, 다음달, 이전월, 다음월

SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201711','YYYYMM'),-1),'YYYYMM') PREV_MONTH
     , TO_CHAR(ADD_MONTHS(TO_DATE('201711','YYYYMM'),1),'YYYYMM') NEXT_MONTH 
  FROM DUAL;