2016-10-22 4 views
-1

Angenommen, es ist eine TabelleSet Standardwert in SQL Query

Emp_id Name Comments 
1  Ana Test 
2  Dana Test1 
3  Fiona Test2 

Die folgende Abfrage alle Datensätze aus meiner Tabelle abruft, und jetzt muss ich Datum SysDate + 5 Arbeitstage (ausschließlich Samstage abrufen und Sonntag auch), die nicht in der Tabelle ist

select emp_id,Name,Comments from Employees 

und die erwartete Ausgabe ist

Emp_id Name Comments Date 
    1  Ana  Test  28.10.2016 
    2  Dana Test1  28.10.2016 
    3  Fiona Test2  28.10.2016 

Ihre Hilfe ist sehr geschätzt

+0

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

+0

@juergend - Hast du die Frage überhaupt gelesen? Es ging nicht um fünf Tage, sondern um fünf BUSINESS-Tage. Es ist in Ordnung, helfen zu wollen, aber wenn Sie sich nicht einmal die Zeit nehmen, die Frage zu lesen und zu verstehen, helfen Sie nicht viel. – mathguy

Antwort

2

Die Formel sollte insgesamt 7 Tage hinzufügen, wenn SYSDATE ein Arbeitstag ist, aber es sollte nur 5 Tage hinzufügen, wenn SYSDATE ein Sonntag und nur 6 Tage, wenn SYSDATE ein Samstag ist. Dies kann mit einem CASE-Ausdruck erfolgen:

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

(„Date“ ist ein reserviertes Wort in Oracle, tun Sie es nicht als Spaltennamen verwenden.)

Eine andere Sache - wenn Sie wirklich eine Notwendigkeit Datum (und brauchen nicht die gleiche Tageszeit wie die "aktuelle" Zeit) Sie möchten vielleicht auch den gesamten Ausdruck in trunc(....) umhüllen, so dass Sie nur das Datum erhalten, mit der Zeit auf 00:00:00 eingestellt.

+0

Dank @mathguy Ich nach dem Zufallsprinzip überprüft und erst nachdem Sie kommentiert, habe ich festgestellt, dass die Abfrage Ergebnisse sind falsch wann Datum fällt auf Montag und Freitag –

+0

Schätzen Sie Ihre Hilfe –

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

Aber die Abfrage sollte Samstage und Sonntage ausschließen :( –

+0

@ Annie. Sie bearbeitet Ihre Frage. Ich sah jetzt. Ich verstehe Ihre Frage – Eldeniz