2016-10-22 233 views
-1

假设有一个表设置默认值

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

http://www.orafaq.com/faq/how_does_one_add_a_day_hour_minute_second_to_a_date_value –

+0

@juergend - 你甚至读过这个问题吗?这不是关于增加五天,而是增加五个营业日。可以帮忙,但如果你没有花时间阅读和理解这个问题,那么你的帮助就不大。 – mathguy

回答

2

的公式应该增加7天总如果SYSDATE是工作日,但应增加只有5天,如果SYSDATE是一个星期天,只有6天的时候SYSDATE是星期六。这可以用一个CASE表达式来完成:

... SYSDATE + case to_char(SYSDATE, 'Dy') when 'Sun' then 5 
              when 'Sat' then 6 
              else   7 end as my_date... 

(“日期”是Oracle的保留字,不要使用它作为列名。)

另一件事 - 如果你真的需要一个日期(并且不需要与“当前”时间相同的时间),您可能还想将整个表达式包装在trunc(....)之内,以便获取日期,时间设置为00:00:00

+0

谢谢@mathguy我随机检查,只有在u评论后,我注意到查询结果不正确日期在周一和周五。 –

+0

感谢您的帮助 –

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 
+0

但是查询应该排除星期六和星期天:( –

+0

@ Annie。您编辑了您的问题。我现在看到了。您理解我的问题 – Eldeniz