我有一个日历,现在,我想在循环中创建第一个日期和第二个日期的差。输出将通过以下创建的过程执行 现在,我想通过使用功能或任何可用的方法来进行处理
预期输出
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');
答案 0 :(得分:0)
通常,在表级别,您也可以执行此操作以计算第一天与第二天之间的差额,但是在这里您要处理程序输出
您可以使用sql进行任何操作,然后不需要过程
您定义的问题与计算第一天和第二天的汽油价格相同
select t.*,
(coalesce(calendar,
lead(calendar ignore nulls) over (order by calendar)
) - calendar
) as diffdate
from t;