Create View with 365 days

前端 未结 3 1892
青春惊慌失措
青春惊慌失措 2020-12-18 09:30

How to Create a View with all days in year. view should fill with dates from JAN-01 to Dec-31. How can I do this in Oracle ?

If current yea

3条回答
  •  自闭症患者
    2020-12-18 09:56

    you can use piplined table, it should be something like this:

    create or replace type year_date_typ as object (v_day date);
    create or replace type year_date_tab as table of year_date_typ;
    
    CREATE OR REPLACE FUNCTION get_dates(year IN VARCHAR2) RETURN year_date_tab PIPELINED IS
    v_start_date date := to_date('0101' || year, 'ddmmyyyy');
    res year_date_typ := year_date_typ(null);
    v_days_in_year integer := 365;
    BEGIN
    if to_char(last_day(to_date('0102'||year, 'ddmmyyyy')), 'dd') = '29' then
    v_days_in_year := 366;
    end if;
    FOR i in 0 .. v_days_in_year integer-1 LOOP
    res.v_day := v_start_date + i;
    pipe row(res);
    END LOOP;
    
    return;
    END get_dates;
    

    and you can use it:

    select * from table(get_dates('2011'));
    

提交回复
热议问题