Prueba esto:
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`;
Cómo funciona:
- En primer lugar, agregará 5 días a su fecha.
- En segundo lugar, cuando
date_field
y 5 días después están en dos semanas diferentes, se deben agregar 2 días adicionales. - En tercer lugar, cuando 5 días después es
Sat
oSun
, se debe agregar 2 días adicionales.