Thursday, December 27, 2007

PL/SQL : Add_Month function

Be aware of this function, it may have unexpected results :

SELECT add_months(TO_DATE('27-JAN-2007'), 1) FROM dual;
SELECT add_months(TO_DATE('28-JAN-2007'), 1) FROM dual;
SELECT add_months(TO_DATE('29-JAN-2007'), 1) FROM dual;
SELECT add_months(TO_DATE('30-JAN-2007'), 1) FROM dual;
SELECT add_months(TO_DATE('31-JAN-2007'), 1) FROM dual;
SELECT add_months(TO_DATE('01-FEV-2007'), 1) FROM dual;
This queries returns :
27-02-2007
28-02-2007
28-02-2007
28-02-2007
28-02-2007
01-03-2007
If you need to add a specific number of days, consider to use :
SELECT TO_DATE('01-FEV-2007') + 30 FROM dual;

No comments: