Date Queries
-- Gregorian Calendar: Get dates in mm/dd/yyyy format and day of the week for  
-- any year

SET SERVEROUTPUT ON;

DECLARE
 CURSOR c_yr(p_yyyy IN NUMBER) IS 
  WITH q_day AS
   (SELECT TRUNC(TO_DATE(p_yyyy,'yyyy'),'yyyy') first_day 
    FROM   DUAL 
   ),
  q_year AS
   (SELECT 
      first_day,
      LAST_DAY(ADD_MONTHS(first_day,11)) last_day, 
      LAST_DAY(ADD_MONTHS(first_day,11)) - first_day days_in_year 
    FROM  q_day 
   )
  SELECT level  day_idx
         ,first_day+level-1 AS calendar_day    
  FROM   q_year
  CONNECT BY level <= days_in_year+1;

  i_yyyy   NUMBER := &yyyy;
BEGIN
  FOR day_rec IN c_yr(i_yyyy)  LOOP
   DBMS_OUTPUT.PUT_LINE('"'||
     LAPD(day_rec.day_idx,3,'0')||'","'||
     TO_CHAR(day_rec.calendar_day,'mm/dd/yyyy')||'","'||
     TO_CHAR(day_rec.calendar_day,'DY')||'"');
  END LOOP;
END;
/

   Dual Table Queries    Fiscal Calendar    Quarters    First Day    SQL Functions

Oracle registered trademark of Oracle Corporation.

Last Revised On: December 27th, 2021

  23839