Hãy thử điều này:
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ách hoạt động:
- Trước hết, nó sẽ thêm 5 ngày vào ngày của bạn.
- Thứ hai, khi
date_field
và 5 ngày sau là hai tuần khác nhau, phải cộng thêm 2 ngày nữa. - Thứ ba, khi 5 ngày sau là
Sat
hoặcSun
, nó phải được thêm vào 2 ngày nữa.