Domo IDEAs Conference - Beast Modes - Add Business Days
Greetings! This is another post highlighting a beast mode from my Domo IDEAs conference session. This one covers how to add a specific number of business days into the future.
How do I add a specific number of business days?
We convert the number of business days into the actual days. Convert the number of business days into full weeks and multiply by 7 to get the total days. Then add the remaining days and some extra days if we cross over a weekend.
-- Author: -- Created: -- Last Modified: -- Description: Add 6 business days to the specific date in the `dt` field. -- NOTE: This is a lazy calculation which doesn't take into account holidays or other days -- the business may be closed. -- ALSO - This assumes M-F as the work week. `dt` + -- Calculate the number of days. in this example replace 6 with the number of business days to add INTERVAL ( -- Calculate the number of weeks in the number of business days FLOOR(6/5) * 7 -- If the remaining number of days (MOD) would take us past Saturday then add 2 days to get over the weekend. + CASE WHEN MOD(6,5) + DAYOFWEEK(`dt`) >= 7 THEN 2 - -- This returns either 1 if the date is a Saturday otherwise 0 -- Does the date start on saturday? If so we only need to add 1 (2-1=1) days to get over the weekend instead of 2. FLOOR(DAYOFWEEK(`dt`)/7) ELSE 0 END -- Add the remaining number of work days after taking into account full weeks + MOD(6,5)) DAY
This assumes any Monday-Friday is a business day and doesn't handle Holidays or days the business may be closed.