sql >> Base de Datos >  >> RDS >> Oracle

Oracle:Días entre dos fechas y Excluir días de la semana cómo manejar números negativos

Adaptado de mi respuesta aquí:

Obtenga la cantidad de días entre los lunes de ambas semanas (usando TRUNC( datevalue, 'IW' ) como NLS_LANGUAGE método independiente para encontrar el lunes de la semana), luego agregue el día de la semana (lunes =1, martes =2, etc., hasta un máximo de 5 para ignorar los fines de semana) para la fecha de finalización y reste el día de la semana para la fecha de inicio. Así:

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