Muster
Arbeitstage zählen
Die Arbeitstage einmal aufbauen (kein Wochenende, kein Feiertag) und sie dann zwischen zwei Daten zählen.
generate_series über den Zeitraum, EXTRACT(ISODOW FROM day) <= 5 und NOT EXISTS ein Feiertag: Das ist der Kalender. Zählen Sie
seine Tage mit day > start AND day <= end. Die Abkürzung „Wochentage minus Feiertage“ zieht einen Feiertag, der auf ein
Wochenende fällt, doppelt ab. Echte Projekte führen den Kalender als Tabelle, mit is_business_day pro Land.
WITH days AS (
SELECT CAST(d AS DATE) AS day
FROM generate_series(DATE '2025-12-22', DATE '2025-12-31', INTERVAL '1 day') AS t(d)
),
holidays(day) AS (VALUES (DATE '2025-12-25'))
SELECT COUNT(*) AS calendar_days,
SUM(CASE WHEN EXTRACT(ISODOW FROM day) <= 5
AND day NOT IN (SELECT day FROM holidays) THEN 1 ELSE 0 END) AS business_days
FROM days;
| calendar_days | business_days |
|---|---|
| 10 | 7 |
Üben:Business days to pay