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

in #oracle6 years ago

내장함수 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;

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.029
BTC 64572.94
ETH 2630.79
USDT 1.00
SBD 2.82