假设有一个表
Emp_id Name Comments
1 Ana Test
2 Dana Test1
3 Fiona Test2
以下查询将从我的表中检索所有记录,现在我必须检索日期SysDate + 5个工作日(不包括星期六和星期日)以及不在表中
select emp_id,Name,Comments from Employees
预期的输出是
Emp_id Name Comments Date
1 Ana Test 28.10.2016
2 Dana Test1 28.10.2016
3 Fiona Test2 28.10.2016
非常感谢您的帮助
答案 0 :(得分:2)
如果SYSDATE是营业日,公式应该增加7天,但如果SYSDATE是星期日,则应该只添加5天,而当SYSDATE是星期六时,它应该只增加6天。这可以通过CASE表达式完成:
... SYSDATE + case to_char(SYSDATE, 'Dy') when 'Sun' then 5
when 'Sat' then 6
else 7 end as my_date...
(" Date"是Oracle中的保留字,不要将其用作列名。)
另一件事 - 如果你真的需要一个约会(并且不需要与"当前"时间相同的时间),你可能还想将整个表达包裹在{ {1}}所以你只得到日期,时间设置为trunc(....)
。
答案 1 :(得分:0)
select emp_id,Name,Comments,
(SYSDATE + case to_char(SYSDATE, 'DY')
when 'Sun' then 5
when 'Sat' then 6
else 7
end) Date
from Employees