Dessa saker görs normalt med en tabell som listar alla arbetsdagar under ett år snarare än en naiv formel som:
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)
Genom att använda en tabell kan du ta hänsyn till saker som helgdagar, nationella helgdagar, religiösa högtider, röstningsdagar, sorgedagar, ad hoc-dagar som kan uppstå av företag eller politiska skäl etc etc. Att underhålla tabellen blir då en viktig uppgift. Att hämta nästa arbetsdag är i huvudsak en fråga om tabellen för MIN(date)
WHERE date > current_date