[오라클] 내장함수 LAST_DAY를 프로시저로 구현

내장함수 LAST_DAY를 프로시저로 구현한 것으로 결과 값이 완전 같지는 않다. 정확히는 LAST_DAY는 DATE타입으로 결과가 나오지만 저건 TO_CHAR로 포멧팅하여서 YYYYMMDD형태로 나오게 된다.

create or replace PROCEDURE LAST_DAY_PROCEDURE
( 
  CDATE VARCHAR
)
IS
 CRETURN VARCHAR(200);
BEGIN
    --        '01' CONCAT  -1 
    CRETURN := TO_CHAR(TO_DATE(CONCAT(TO_CHAR(ADD_MONTHS(TO_DATE(CDATE, 'YYYYMMDD'), +1), 'YYYYMM'), '01'), 'YYYYMMDD') - 1, 'YYYYMMDD');
    dbms_output.put_line(CRETURN);
  
END LAST_DAY_PROCEDURE;

변경 -> 기존 LAST_DAY의 경우 받은 DATE를 입력받아도 되기에 SYSDATE도 입력 받을 수 있게 변경.

create or replace PROCEDURE LAST_DAY_PROCEDURE
( 
  CDATE VARCHAR
)
IS
 CRETURN VARCHAR(200);
BEGIN
    -- LOGIC .
    CRETURN := TO_CHAR(TO_DATE(CONCAT(TO_CHAR(ADD_MONTHS(TO_DATE(CDATE), +1), 'YYYYMM'), '01'), 'YYYYMMDD') - 1);
    dbms_output.put_line(CRETURN);
  
END LAST_DAY_PROCEDURE;
H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now