关于两个日期间隔工作日的oracle sql实现

sysdate是系统时间  xx.dd是从数据库表中取出的时间,执行结果取出所有当前系统时间在5个工作日以后的结果集。

select * from tableName

where

     (trunc(sysdate -x.dd) -
       ((case WHEN (8 - to_number(to_char(x.dd, 'D'))) >
     trunc(sysdate - x.dd) + 1 THEN
     0
     ELSE
     trunc((trunc(sysdate - x.dd) -
     (8 - to_number(to_char(x.dd, 'D')))) / 7) + 1
     END)
     +
     (case WHEN mod(8 - to_char(x.dd, 'D'), 7) >
     trunc(sysdate - x.dd) - 1 THEN
     0
     ELSE
     trunc((trunc(sysdate - x.dd) -
     (mod(8 - to_char(x.dd, 'D'), 7) + 1)) / 7) + 1
         END))
    ) >=5

PS:关于java代码对于这一功能的实现我也写在了相应的分类里 大家可以看一下

posted @ 2010-09-20 16:04  杨超路飞  阅读(553)  评论(0编辑  收藏  举报