Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:giorni tra due date ed Escludi giorni feriali come gestire i numeri negativi

Adattato dalla mia risposta qui:

Ottieni il numero di giorni tra i lunedì di entrambe le settimane (usando TRUNC( datevalue, 'IW' ) come NLS_LANGUAGE metodo indipendente per trovare il lunedì della settimana) quindi aggiungere il giorno della settimana (lunedì =1, martedì =2, ecc., fino a un massimo di 5 per ignorare i fine settimana) per la data di fine e sottrarre il giorno della settimana per la data di inizio. In questo modo:

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