2017-04-11 3 views
1

Wenn tun:Wie zählen Tage zwischen zwei Terminen mit Ausnahme von Samstag und Sonntag in Postgresql

SELECT '2017-03-31'::DATE - '2017-03-01'::DATE AS daysCount 

es Tage gibt zählen zwischen diesen Daten. Ich brauche dasselbe, aber alle Samstage und Sonntage ausschließend. Wie?

+1

Dies wird [fragte] (http://stackoverflow.com/ Fragen/42076236/Beginner-Weg-zu-Count-Days-zwischen-Daten-ausgenommen-Wochenenden-und-Ferien) so [viele Male] (http://stackoverflow.com/questions/41877136/how-to-count- Tage-außer-Sonntag-zwischen-zwei-Daten-in-Postgres) – pozs

Antwort

2

können Sie dow verwenden, um sie auszuschließen, wie zB:

t=# with i as (
    select '2017-03-31'::DATE d1, '2017-03-01'::DATE d2 
) 
select count(1) 
from i 
join generate_series(d2,d1,'1 day'::interval) g on true 
where extract(dow from g) not in (6,0); 
count 
------- 
    23 
(1 row) 

t=# with i as (
    select '2017-04-30'::DATE d1, '2017-04-01'::DATE d2 
) 
select count(1) 
from i 
join generate_series(d2,d1,'1 day'::interval) g on true 
where extract(dow from g) not in (6,0); 
count 
------- 
    20 
(1 row) 
1

Wenn ich richtig verstehe, müssen Sie dies:

select count(*) from (
    select EXTRACT(DOW FROM s.d::date) as dd from generate_series('2017-03-01'::DATE, '2017-03-31'::DATE , '1 day') AS s(d) 
) t 
where dd not in(0,6) 
Verwandte Themen