Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Tage zwischen zwei Datums- und Wochentagen ausschließen, wie mit negativen Zahlen umgegangen wird

Angepasst von meiner Antwort hier:

Ermitteln Sie die Anzahl der Tage zwischen den Montagen beider Wochen (mit TRUNC( datevalue, 'IW' )). als NLS_LANGUAGE unabhängige Methode zum Ermitteln des Montags der Woche), addieren Sie dann den Wochentag (Montag =1, Dienstag =2 usw. bis maximal 5, um Wochenenden zu ignorieren) für das Enddatum und subtrahieren Sie den Wochentag für das Startdatum. So:

SELECT ( TRUNC( end_date, 'IW' ) - TRUNC( start_date, 'IW' ) ) * 5 / 7
       + LEAST( end_date - TRUNC( end_date, 'IW' ) + 1, 5 )
       - LEAST( start_date - TRUNC( start_date, 'IW' ) + 1, 5 )
          AS WeekDaysDifference
FROM   your_table