SQL> SELECT 2 LEVEL Month, 3 TO_CHAR(LAST_DAY(TO_DATE(LEVEL || '/1/' || 4 TO_CHAR(SYSDATE, 'YYYY'), 'MM/DD/YYYY')),'DD') Days 5 FROM 6 Dual 7 CONNECT BY 8 LEVEL <= 12; MONTH DA ---------- -- 1 31 2 28 3 31 4 30 5 31 6 30 7 31 8 31 9 30 10 31 11 30 12 31 12 rows selected. #### SELECT TO_CHAR(ADD_MONTHS(TO_DATE('1', 'DDD'), LEVEL) - 1, 'DD') FROM Dual CONNECT BY LEVEL < 13; #### SELECT TO_CHAR(ADD_MONTHS(DATE '2014-1-1', LEVEL) - 1, 'DD') FROM Dual CONNECT BY LEVEL < 13; #### SELECT TO_CHAR(LAST_DAY(TO_DATE(LEVEL,'MM')),'DD')FROM Dual CONNECT BY LEVEL<13;