Những điều này thường được thực hiện với một bảng liệt kê tất cả các ngày làm việc trong một năm chứ không phải là một công thức ngây thơ như:
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)
Sử dụng bảng cho phép bạn tính đến những thứ như ngày lễ ngân hàng, ngày lễ quốc gia, lễ hội tôn giáo, ngày bỏ phiếu, ngày tang lễ, ngày nghỉ đột xuất có thể xảy ra vì lý do chính trị hoặc công ty, v.v. Bảo quản bảng sau đó trở thành một nhiệm vụ quan trọng. Truy xuất ngày làm việc tiếp theo về cơ bản là một trường hợp truy vấn bảng cho MIN(date)
WHERE date > current_date