본문 바로가기

데이터베이스/ORACLE

[ORACLE] 해당 월의 마지막 법정 영업일자를 구하기(SYSDATE, 조건문 활용)

문제

아래 SQL을 참고하여 해당월의 마지막 법정 영업일자를 구하는 SQL을 작성(법정 영업일은 월~금요일)

SELECT  TO_CHAR(SYSDATE,'DDD'),
			   TO_CHAR(SYSDATE,'DD'),
	           TO_CHAR(SYSDATE,'D') 
FROM  DUAL; 
SELECT  LAST_DAY(SYSDATE) FROM DUAL; 

정답1 (CASE 활용)

SELECT CASE 
            WHEN TO_CHAR(LAST_DAY(SYSDATE), 'DAY') = '일요일' THEN TO_CHAR(LAST_DAY(SYSDATE)-2)
            WHEN TO_CHAR(LAST_DAY(SYSDATE), 'DAY') = '토요일' THEN TO_CHAR(LAST_DAY(SYSDATE)-1)
            ELSE TO_CHAR(LAST_DAY(SYSDATE))
       END AS LAST_WORK_DAY
FROM DUAL;

정답2 (DECODE 활용)

SELECT DECODE(TO_CHAR(LAST_DAY(SYSDATE), 'DAY'), '일요일', TO_CHAR(LAST_DAY(SYSDATE)-2),
                                                 '토요일', TO_CHAR(LAST_DAY(SYSDATE)-1),
                                                          TO_CHAR(LAST_DAY(SYSDATE)))
AS LAST_WORK_DAY
FROM DUAL;