오라클 ADD_MONTHS, MSSQL DATEADD 계산 차이점 문의 0 2 6,389

by 터류 [Oracle 기초] ORACLE MSSQL ADD_MONTHS DATEADD [2022.12.08 16:44:27]


오라클에서 MSSQL DATEADD 월 더하기를 처럼 처리 할 수 있는 방법이있을까요?
MSSQL에서 월 계산해서 나오는 날짜로 오라클쪽에 일치 시켜야하는데 쉽게 해결이 안되네요

예) ORACLE - ADD_MONTHS

22/2/28 + 9개월 = 23/11/30
22/4/30 + 9개월 = 23/1/31
22/5/29 + 9개월 = 23/2/28

오라클에서 ADD_MONTHS 이전 날짜에서 -1일 하고 9개월 더하고 +1일 더하는 방식으로 했더니 5/29 은 3/1로 넘어가네요
DATEADD 에서는 2/28 로 처리되고요

ADD_MONTHS(22/5/29 -1), 9) +1 = 23/3/1

예) MSSQL - DATEADD

22/2/28 + 9개월 = 23/11/28
22/4/30 + 9개월 = 23/1/30
22/5/29 + 9개월 = 23/2/28  (생각과 다르게 3/1로 안넘어 감)

함수를 만들어서 5/28 5/29 5/30 5/31 일때 9개월을 더한 2월인 달의 마지막 날짜(28일, 29일)를 붙이는 방법으로 날짜를 계산해보고 있는데
생각지 못한 문제가 있을까봐 이런 방법 이외 다른 방법이 있을지 조언 부탁드립니다.

by 마농 [2022.12.08 17:45:20]
WITH t AS
(
SELECT DATE '2022-02-28' dt FROM dual
UNION ALL SELECT DATE '2022-03-01' FROM dual
UNION ALL SELECT DATE '2022-03-31' FROM dual
UNION ALL SELECT DATE '2022-04-30' FROM dual
UNION ALL SELECT DATE '2022-05-29' FROM dual
)
SELECT dt
     , LEAST(dt1 + dd - 1, LAST_DAY(dt1)) dt1
  FROM (SELECT dt
             , TO_CHAR(dt, 'dd') dd
             , ADD_MONTHS(TRUNC(dt, 'mm'), 9) dt1
          FROM t
        )
;

 


by 터류 [2022.12.09 14:27:48]

답변 감사합니다!

덕분에 잘 해결하였습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입