본문 바로가기

업무관련/SQL

오라클 주차 요일 날짜 구하기

-- 해당일의 주차 구하기 (월~일 체계)

SELECT TO_CHAR(SYSDATE,'IW') FROM DUAL 

 

-- 당월 첫 주 화요일

SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),'화') FROM DUAL

SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),'화요일') FROM DUAL

SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),3) FROM DUAL

 

-- 당월 마지막 날짜

SELECT LAST_DAY(SYSDATE) FROM DUAL

 

-- 당월의 첫 날 구하기

SELECT TO_CHAR(TRUNC(SYSDATE,'MM'),'YYYYMMDD') FROM DUAL

 

-- 당월 첫주 날 수

SELECT TO_NUMBER(TO_CHAR(NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1),'DD')) FROM DUAL

 

-- 전월의 마지막 날 구하기

SELECT TO_CHAR(TRUNC(SYSDATE,'MM')-1,'YYYYMMDD') FROM DUAL

 

-- 당월 마지막 주 목요일

SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),'목') FROM DUAL

SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),'목요일') FROM DUAL

SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),5) FROM DUAL

 

-- 당월 마지막주 날 수

SELECT LAST_DAY(SYSDATE) - NEXT_DAY((LAST_DAY(SYSDATE)-7),2) + 1 FROM DUAL

 

-- 해당일 포함 된 주의 목요일 날짜

SELECT CASE WHEN TO_CHAR(TO_DATE('20100629','YYYYMMDD'), 'D') < 5 THEN TRUNC(TO_DATE('20100629','YYYYMMDD')-5, 'IW')+3

            ELSE TRUNC(TO_DATE('20100629','YYYYMMDD'), 'IW')+3 END RESULT

  FROM DUAL

 

-- 해당일 포함 된 주가 속한 년 (년말,년초시)

SELECT CASE WHEN LAST_DAY(SYSDATE) - NEXT_DAY((LAST_DAY(SYSDATE)-7),2) + 1 < 4         -- 월 마지막 주의 날수가 4일 미만이면서 

             AND SYSDATE <= LAST_DAY(SYSDATE) AND SYSDATE >= NEXT_DAY((LAST_DAY(SYSDATE)-7),2)   -- 오늘이 월 마지막 주의 일자에 포함되면

            THEN TO_CHAR(ADD_MONTHS(SYSDATE,1),'YYYY')||TO_CHAR(SYSDATE, 'IW')         -- 차월의 월이 속한 년도 + 주차를 취하고

            WHEN TO_NUMBER(TO_CHAR(NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1),'DD')) < 4      -- 월 첫주의 날수가 4일 미만이면서

             AND SYSDATE <= NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1)                        -- 오늘이 월 첫 주의 일자에 포함되면

            THEN TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY')||TO_CHAR(SYSDATE, 'IW')        -- 전월의 월이 속한 년도 + 주차를 취하고

            ELSE TO_CHAR(SYSDATE,'YYYY')||TO_CHAR(SYSDATE, 'IW')                       -- 그외는 당월의 월이 속한 년도 + 주차를 취함.

        END AS YEAR_WEEK_NO

FROM DUAL

 

-- 요일 구하기 (1=일 ~ 7=토)

SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL

 

-- 요일 구하기 (한글로 출력)

SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL -- 월

SELECT TO_CHAR(SYSDATE, 'DY', 'NLS_DATE_LANGUAGE=KOREAN') FROM DUAL -- 월

SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL -- 월요일

 

-- 해당주 목요일 날짜

SELECT TRUNC(SYSDATE, 'IW')+3 FROM DUAL

 

-- 당월 마지막 날의 요일 구하기 (1=일 ~ 7=토)

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

 

-- 마지막주 목요일 (1=일 ~ 7=토)

SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),5) FROM DUAL

 

-- 마지막주 월요일 (1=일 ~ 7=토) 바로 전 날짜

SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),2)-1 FROM DUAL

 

[출처] 오라클 날짜,요일,주,월 구하기|작성자 문진멀국