Tyto věci se obvykle dělají pomocí tabulky, která uvádí všechny pracovní dny v roce, spíše než naivním vzorcem jako:
CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5
THEN 1 + (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW'))
ELSE 1
END --(on monday to thursday this returns 2 to 5, on fri/sat/sun this returns 1)
CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5
THEN TRUNC (SYSDATE) + 1
ELSE TRUNC (SYSDATE + 4), 'IW')
END --(on monday to thursday this returns tomorrow's date, on fri/sat/sun it returns next monday's date)
Používání stolu vám umožňuje zohlednit věci, jako jsou státní svátky, státní svátky, náboženské festivaly, dny voleb, dny smutku, dny volna ad hoc, které mohou nastat z firemních nebo politických důvodů atd. atd. Údržba stolu se pak stává důležitým úkolem. Načtení dalšího pracovního dne je v podstatě případ dotazování tabulky na MIN(date)
WHERE date > current_date