Tente isto:
SELECT DATE_ADD(
date_field,
INTERVAL 5 +
IF(
(WEEK(date_field) <> WEEK(DATE_ADD(date_field, INTERVAL 5 DAY)))
OR (WEEKDAY(DATE_ADD(date_field, INTERVAL 5 DAY)) IN (5, 6)),
2,
0)
DAY
) AS FinalDate
FROM `table_name`;
Como funciona:
- Em primeiro lugar, adicionará 5 dias à sua data.
- Em segundo lugar, quando
date_field
e 5 dias depois são duas semanas diferentes, devem ser adicionados mais 2 dias. - Em terceiro lugar, quando 5 dias depois for
Sat
ouSun
, deve ser adicionado mais 2 dias.