我有包含用户生日和姓名的数据库。我想选择从 7 天前到未来 7 天生日/命名日的所有用户,此选择有效,但我不知道如何解决生日/命名日为 31.12 的用户的问题。例如。PHP 将返回“用户在 3 天前过生日”,此选择仅在年底前 7 天和新年后 7 天有效。非常感谢您的帮助。
SELECT `name`, `surname`, `gender`, ('birthday') AS event,
DATEDIFF(NOW(), DATE(REPLACE(`birthday`, YEAR(`birthday`), YEAR(NOW())))) AS diff
FROM `users`
WHERE DATEDIFF(NOW(), DATE(REPLACE(`birthday`, YEAR(`birthday`), YEAR(NOW()))))
BETWEEN -7 AND 7
UNION
SELECT `name`, `surname`, `gender`, ('namesday') AS event,
DATEDIFF(NOW(), DATE(REPLACE(`namesday`, YEAR(`namesday`), YEAR(NOW())))) AS diff
FROM `users`
WHERE DATEDIFF(NOW(), DATE(REPLACE(`namesday`, YEAR(`namesday`), YEAR(NOW()))))
BETWEEN -7 AND 7