【问题标题】:next business day of give date in oracle [duplicate]oracle中给出日期的下一个工作日[重复]
【发布时间】:2013-08-23 13:12:51
【问题描述】:

我的任务是查找特定给定日期的下一个工作日。它应该排除假期表 (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);`

【问题讨论】:

  • 看看这个答案,似乎是一个现成的功能:stackoverflow.com/a/16413949/1026199
  • 你已经得到了上一版本问题的答案。这似乎没有添加任何新内容。您应该解释为什么这些答案没有用,并修改您的原始问题以提供所需的详细信息和更多信息,而不是再次问同样的问题。

标签: sql oracle


【解决方案1】:

执行这 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 Select 中。

【讨论】:

  • 这个结束日期是什么意思?假期表怎么减?
  • 限制您之间的日期范围,必须确保至少有 1 个工作日。你可以用“where rownumdocs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm
猜你喜欢
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
相关资源
最近更新 更多