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代码对于这一功能的实现我也写在了相应的分类里 大家可以看一下
本文介绍了一种使用SQL来筛选数据库记录的方法,特别是当需要找出所有在未来五个工作日之后的记录时。通过复杂的SQL表达式实现了对日期的精确计算,考虑到了不同日期间的周末和工作日差异。
1452

被折叠的 条评论
为什么被折叠?



