-1

たとえば、誕生日を計算するためのイベントを作成します。

生年月日 = 1990-09-07 現在の日付 = 2013-09-05

私のクエリ:

SELECT id FROM user WHERE ( birthday - NOW() ) <= 7

このクエリは間違いです

4

4 に答える 4

3

DAYOFYEAR 関数の方が適していると思います。

mysql> SELECT DAYOFYEAR('2000-09-07') - DAYOFYEAR(now()) AS diff;
+------+
| diff |
+------+
|    3 |
+------+

今日は 2013-09-05 で、3 日かかりました。これで、条件を構成できます。うるう年は1日だけ気にしてください。

于 2013-09-05T08:24:41.250 に答える
2

あなたは誕生日だと言ったので、日付は毎月繰り返すことができるので、月と日付を考慮する必要があります..

年差については、以下のようなものを試してください。

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
于 2013-09-05T08:30:41.570 に答える
1

あなたのクエリは次のようなものでなければならないと思います

SELECT id 
FROM user 
WHERE (  DAYOFYEAR(birthday) - DAYOFYEAR(NOW())  <= 7) 
于 2013-09-05T08:23:24.473 に答える
1

Dayofyear 関数は、要件に合わせて配置するだけで便利です

SELECT id FROM user WHERE (DAYOFYEAR(birthday) - DAYOFYEAR(NOW()))  <= 7
于 2013-09-05T08:27:31.743 に答える