下一个工作日在oracle中给出日期

时间:2013-08-21 08:44:28

标签: sql oracle

我有一项任务是找到特定日期的下一个工作日。它应该排除假日表(mst_holiday)中列出的假期。我有一个程序使用解码功能来查找连续假期或周末的下一个工作日。例如,如果今天是星期三21-07-2013,如果我需要找到5天后它应该显示26-07-2013,如果是假期,它应该显示连续的非假期。

我使用的样本解码功能如下。请帮我写备用sql查询。

DECODE
   (ldate,
    laps.holidaydate, DECODE
       (ldate + 1,
        laps.holidaydate + 1, DECODE
           (ldate + 2,
            laps.holidaydate + 2,ldate+3,ldate+2),ldate+1),ldate);`

1 个答案:

答案 0 :(得分:0)

执行以下3个步骤:

1)生成您要检查的日期范围,例如:

select to_date(:start_date,'dd-mon-yyyy') + rownum -1
from all_objects
where rownum <= to_date(:end_date,'dd-mon-yyyy')-to_date(:start_date,'dd-mon-yyyy')+1

2)选择减去带有假期表的表

3)选择按日期排序并获取第一条记录

将它全部放在一个sql中。