2016-10-22 275 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