использовать NOW() - INTERVAL WEEKDAY(birthdate) +2 DAY
получить последнюю дату субботы.
Затем используйте функции day
и month
, чтобы получить номер дня и месяца, а затем отметьте пункт where.
Вы можете попробовать это.
CREATE TABLE users(
id INT,
name VARCHAR(50),
birthdate DATE
);
INSERT INTO users VALUES (1,'John' , '1990-08-27');
INSERT INTO users VALUES (2,'Jane' , '1985-08-29');
INSERT INTO users VALUES (22,'Joe' , '1985-05-31');
INSERT INTO users VALUES (33,'Joe' , '1985-08-11');
INSERT INTO users VALUES (3,'Joe' , '1985-08-31');
Запрос 1 :
SELECT *
FROM users
WHERE
month(birthdate) = month(NOW())
AND
day(birthdate) between day(NOW() - INTERVAL WEEKDAY(birthdate) +2 DAY) and day(NOW())
Результаты
| id | name | birthdate |
|----|------|------------|
| 1 | John | 1990-08-27 |
| 2 | Jane | 1985-08-29 |