• So, what's the deal with not having a dates table?

    It will solve all your problems, no need for complex functions or anything else exotic.

    The main problem: How do you define 'workday' programatically?

    You can't. Simple as that.

    'Workday' is a business rule, it differs from place to place, so you need to single out those 'special' days anyway. Might as well do it once, store it in a permanent table for lookups, then it's always there to be found. No need to try to calculate it everytime.

    Do it once, then forget about it. 🙂

    /Kenneth