How to get a list of months between 2 given dates using a query?

后端 未结 6 2332
不思量自难忘°
不思量自难忘° 2020-12-10 15:19

I have 2 dates, say 28-Mar-2011 and 29-Jun-2011. I need an sql query that will display the months between these 2 dates including the months containing the dates, ie. June,

6条回答
  •  时光说笑
    2020-12-10 15:49

         declare 
            v_date_from_first_day date;
            v_date_to_last_day date;
            v_month_name varchar2(10);
            v_month_number number;
            v_year_number number;
            v_month_diff number;
            begin
              v_date_to_last_day := to_date('31.12.2018'); 
              v_date_from_first_day := to_date('01.01.2018');
    
              select months_between(v_date_to_last_day,v_date_from_first_day) as diff into v_month_diff from dual;
    
              for i in 1..round(v_month_diff, 2) loop
              select 
              to_char(trunc(add_months(v_date_to_last_day - months_between(v_date_from_first_day, v_date_to_last_day), -i)), 'fmMonth') as month_nm,
              to_char(trunc(add_months(v_date_to_last_day - months_between(v_date_from_first_day, v_date_to_last_day), -i)), 'MM') as month_num,
              to_char(trunc(add_months(v_date_to_last_day - months_between(v_date_from_first_day, v_date_to_last_day), -i)), 'YYYY') as year_num
              into v_month_name, v_month_number, v_year_number
              from dual;
    
              dbms_output.put_line(v_month_number || '/' || v_year_number);
    dbms_output.put_line(v_month_name || '/' || v_year_number);
              end loop;
            end;
    
            Output: 
            12/2018
            11/2018
            10/2018
            9/2018
            8/2018
            7/2018
            6/2018
            5/2018
            4/2018
            3/2018
            2/2018
            1/2018
    

    Here, month names are in Croatian

    Prosinac/2018
    Studeni/2018
    Listopad/2018
    Rujan/2018
    Kolovoz/2018
    Srpanj/2018
    Lipanj/2018
    Svibanj/2018
    Travanj/2018
    Ožujak/2018
    Veljača/2018
    Siječanj/2018
    

提交回复
热议问题