たとえば、誕生日を計算するためのイベントを作成します。
生年月日 = 1990-09-07 現在の日付 = 2013-09-05
私のクエリ:
SELECT id FROM user WHERE ( birthday - NOW() ) <= 7
このクエリは間違いです
DAYOFYEAR 関数の方が適していると思います。
mysql> SELECT DAYOFYEAR('2000-09-07') - DAYOFYEAR(now()) AS diff;
+------+
| diff |
+------+
| 3 |
+------+
今日は 2013-09-05 で、3 日かかりました。これで、条件を構成できます。うるう年は1日だけ気にしてください。
あなたは誕生日だと言ったので、日付は毎月繰り返すことができるので、月と日付を考慮する必要があります..
年差については、以下のようなものを試してください。
SELECT
(YEAR(birthdate) - YEAR(NOW())) AS yeardifference
FROM
table
WHERE
MONTH(birthdate) = MONTH(NOW())
AND
DATEDIFF(birthdate, NOW()) <= 7
日差について
SELECT
DATEDIFF(birthdate, NOW())
FROM
table
WHERE
MONTH(birthdate) = MONTH(NOW())
AND
DATEDIFF(birthdate, NOW()) <= 7
あなたのクエリは次のようなものでなければならないと思います
SELECT id
FROM user
WHERE ( DAYOFYEAR(birthday) - DAYOFYEAR(NOW()) <= 7)
Dayofyear 関数は、要件に合わせて配置するだけで便利です
SELECT id FROM user WHERE (DAYOFYEAR(birthday) - DAYOFYEAR(NOW())) <= 7