Мы используем Oracle 11.
В нашем заявлении CASE WHEN мне нужно проверить, не превышает ли число дней между двумя датами> 3 рабочих дня (исключая выходные и праздничные дни).
CASE WHEN end_date - start_date > 3 THEN 0 --> this includes weekend
and holidays
WHEN CODE = 1 THEN 1
WHEN CODE =2 THEN 2
ELSE 3
END AS MyColumn
Скажем, у меня есть таблица календаря праздников, в которой есть столбец HolidayDates, который содержит все праздники, например: 25/12/2018, 31/12/2018 и т. Д.
HolidayDates
12/25/2018
12/31/2018
Итак, если
Дата1 = 1/2/19 (среда)
Дата2 = 27.12.18 (четверг)
Количество рабочих дней между датой 1 и датой 2составляет 3 дня (12/27, 12/28 и 12/31).
В приведенном ниже запросе будет указано количество рабочих дней, исключая выходные.
Как исключить праздничные дни в этомзапрос?
SELECT TO_CHAR( start_date, 'YYYY-MM-DD "("DY")"') AS start_date,
( TRUNC( end_date, 'IW' ) - TRUNC( start_date, 'IW' ) ) * 5 / 7
+ LEAST( TRUNC( end_date ) - TRUNC( end_date, 'IW' ) + 1, 5 )
- LEAST( TRUNC( start_date ) - TRUNC( start_date, 'IW' ), 5 )
AS Num_Week_Days
FROM table_name;
Спасибо.