[DATABASE/ORACLE] ADD_MONTHS 함수 : 2월 말일 추가 문제를 해결한 사용자 정의 함수 사용하기
Database/Oracle 2019. 11. 2. 21:24728x90
반응형
728x170
■ ADD_MONTHS 함수에서 2월 말일 추가 문제를 해결한 사용자 정의 함수를 사용하는 방법을 보여준다.
▶ 예제 코드 (SQL)
SET SERVEROUTPUT ON;
DECLARE
V_DATE DATE;
FUNCTION AddMonth(P_SOURCE_DATE IN DATE, P_MONTH_COUNT IN NUMBER) RETURN DATE
IS
V_SOURCE_DAY NUMBER;
V_TARGET_DATE DATE;
V_TARGET_DAY NUMBER;
BEGIN
V_SOURCE_DAY := TO_NUMBER(TO_CHAR(P_SOURCE_DATE, 'DD'));
V_TARGET_DATE := ADD_MONTHS(P_SOURCE_DATE, P_MONTH_COUNT);
V_TARGET_DAY := TO_NUMBER(TO_CHAR(V_TARGET_DATE, 'DD'));
IF V_TARGET_DAY > V_SOURCE_DAY
THEN
V_TARGET_DATE := V_TARGET_DATE - (V_TARGET_DAY - V_SOURCE_DAY);
END IF;
RETURN V_TARGET_DATE;
END;
BEGIN
V_DATE := AddMonth(TO_DATE('2019-02-28', 'yyyy-mm-dd'), 1);
DBMS_OUTPUT.PUT_LINE(V_DATE);
END;
728x90
반응형
그리드형(광고전용)
'Database > Oracle' 카테고리의 다른 글
[DATABASE/ORACLE] TRUNC 함수 : 포맷 마스크를 사용해 날짜 절삭하기 (0) | 2019.11.03 |
---|---|
[DATABASE/ORACLE] ROUND 함수 : 포맷 마스크를 사용해 날짜 반올림 하기 (0) | 2019.11.03 |
[DATABASE/ORACLE] 특정일 해당 월 첫번째 날짜 구하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] LAST_DAY 함수 : 해당 월의 마지막 날짜 구하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] FROM_TZ 함수 : 시간대 설정하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] V$TIMEZONE_NAMES 뷰 : 시간대 조회하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] SESSIONTIMEZONE 키워드 : 세션 시간대 구하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] DBTIMEZONE 키워드 : 데이터베이스 시간대 구하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] 현재 날짜와 시간을 반환하는 키워드 데이터 타입 비교하기 (0) | 2019.11.02 |
[DATABASE/ORACLE] LOCALTIMESTAMP 키워드 : 지역 현재 시간 구하기 (0) | 2019.11.02 |
댓글을 달아 주세요