通过使用函数或任何计算第二天之间的datediff来执行程序的工作

时间:2019-05-26 00:31:46

标签: oracle plsql

我有一个日历,现在,我想在循环中创建第一个日期和第二个日期的差。输出将通过以下创建的过程执行 现在,我想通过使用功能或任何可用的方法来进行处理

预期输出

    12-01-2019

    15-02-2019          34

    17-03-2019          30

    27-04-2019          41

这是我到目前为止所做的

ALTER SESSION SET NLS_DATE_FORMAT ='dd-mm-yyyy';

    create view calendartest as (
    select to_date('23-01-2019','dd-mm-yyyy') + level -1  as ENGCAL
    from dual
    connect by level <= 150);


    create table englishcalendar1 as (
    select engcal,  case when engcal like '12-%'  then 'H'
                            when engcal like '18-%' then 'Q'
                            when engcal like '24-%' then 'Y'
                            else 'K' end as FLAG
    from calendartest);



    create or replace procedure calc (startdate in date,enddate in date ) 
    as
    begin

        for rec in ( select * from ENGLISHCALENDAR1
    where  engcal BETWEEN startdate 
                AND enddate   
                        AND flag= 'Q')

        loop
            dbms_output.put_line(rec.engcal);
        end loop;

        exception when others then 
        dbms_output.put_line(SQLERRM);
    end;
    /

    call calc('11-01-2019','12-04-2019');

1 个答案:

答案 0 :(得分:0)

通常,在表级别,您也可以执行此操作以计算第一天与第二天之间的差额,但是在这里您要处理程序输出

您可以使用sql进行任何操作,然后不需要过程

您定义的问题与计算第一天和第二天的汽油价格相同

select t.*,
                   (coalesce(calendar,
                         lead(calendar ignore nulls) over (order by calendar)
                        ) - calendar
               ) as diffdate
        from t;