Я предлагаю вам создать функцию для использования, когда захотите и напишите меньше;)
Этот код, указанный выше, создаст функцию sql, которая подсчитывает и возвращает количество выходных дней (сб, вс). Как раз у вас будет больше возможностей использовать эту функцию.
CREATE OR REPLACE FUNCTION <YourSchemaNameOptional>.count_full_weekend_days(date, date)
RETURNS bigint AS
$BODY$
select COUNT(MySerie.*) as Qtde
from (select CURRENT_DATE + i as Date, EXTRACT(DOW FROM CURRENT_DATE + i) as DiaDate
from generate_series(date ($1) - CURRENT_DATE, date ($2) - CURRENT_DATE) i) as MySerie
WHERE MySerie.DiaDate in (6,0);
$BODY$
LANGUAGE 'SQL' IMMUTABLE STRICT;
После этого, вы можете использовать функцию вернуть только количество выходных дней в интервале. Вот пример использования:
SELECT <YourSchemaNameOptional>.count_full_weekend_days('2017-09-11', '2017-09-25') as days; --> RES: 4
Этот выбор должен вернуть четыре, так как первый и второй день в понедельник, и у нас есть 2 субботы и 2 воскресенья между ними.
Теперь вернуться только рабочих дней (без выходных), , как вы хотите, просто сделать вычитание, как в примере ниже:
SELECT (date '2017-09-25' - date '2017-09-11') - <YourSchemaName>.count_full_weekend_days('2017-09-11', '2017-09-25'); --> RES: 14 - 4 = 10