ユーザーの誕生日と名前の日付のデータベースがあります。7日前から7日前までの誕生日/名前の日を持つすべてのユーザーを選択したいのですが、この選択は機能しますが、誕生日/名前の日が31.12のユーザーの問題を解決する方法がわかりません。例えば。PHPは、「USERは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