2017-03-04 3 views
0

Wie der Titel sagte, ich möchte Tage zwischen 2 Daten berechnen und Wochenende (Samstag und Sonntag) in Oracle auszuschließen, ich habe keine Ahnung davon bei alle, kann jemand helfen, ein Beispiel SQL zu geben?Willst du eine SQL bekommen Tage zwischen 2 Datum und auszuschließen Samstag und Sonntag in Oracle

+0

Meinst du du willst generat e Zeilen für alle Tage zwischen zwei angegebenen Daten? Gibt es auch mehrere Reihen dieser beiden Daten - wie row1 - d1 bis d2, row2 - d3 bis d4? Bitte poste ein paar Beispiele was du als Input geben wirst und was du als Output willst? Woher kommt die Eingabe? ein Tisch? Gibt es eine ID-Spalte oder eine andere eindeutige Spalte? – GurV

+0

Mögliche Duplikate: http://stackoverflow.com/questions/14898357/calculate-business-days-in-oracle-sqlno-functions-or-procedure – Mike

+0

zum Beispiel gibt es start_date und end_date, die ich benutze (end_date - start_date) wird die Anzahl der Tage erhalten, wenn also die Dauer Samstag und Sonntag enthält, sollte das Ergebnis (Tage - 2) sein – user2575502

Antwort

1

Versuchen Sie dies. Ändern Sie start_date und end_date gemäß Ihrer Anforderung.

Wenn Sie Anzahl der Wochentage möchten, verwenden Sie

WITH test_data AS 
    (
    SELECT TO_DATE('01-JAN-2014','DD-MON-YYYY') AS start_date, 
      TO_DATE('31-DEC-2014','DD-MON-YYYY') AS end_date 
     FROM dual 
), 
all_dates AS 
(SELECT td.start_date, td.end_date, td.start_date + LEVEL-1 as week_day 
     FROM test_data td 
    CONNECT BY td.start_date + LEVEL-1 <= td.end_date) 

    select count(*) from all_dates 
    WHERE to_char(week_day, 'dy', 'nls_date_language=AMERICAN') NOT IN ('sun' , 'sat') 

Wenn Sie die Daten angezeigt, in der select-Klausel wollen, verwenden Sie

select week_day from all_dates 

Wie es funktioniert:

  1. Es Beginnen Sie mit dem Hinzufügen von 1 Tag zu Startdatum, bis Sie end_date erreichen, indem Sie in Ora connect by/level verwenden cle.
  2. Es entfernt die Tage, die saturday oder sunday

PS sind: Bezog diese answer für sie

0

Wie wäre es

„select * from emp Vereinfachung wo HireDate zwischen TO_DATE (f_date‘ dd-mm-yyyy) und to_date (t_date, 'Dd-mm-yyyy') und to_char (mieteten, dy) nicht in ('sat', 'sun')

Verwandte Themen