0

ちょっと私はSQLの初心者ですが、誰かが7日以内に誕生日を迎え、他のスレッドを回答で調べた場合、すべてのレコードを引き出すためのクエリを作成しようとしていますが、それらを適応させるのに問題があります私のセットアップに。

    SELECT *
    FROM `QG04c`
    WHERE month( `dob` ) = month( now( ) )
    AND day( `dob` )
    BETWEEN day( now( ) )
    AND day( now( ) ) +7
    AND `Primary Unit?` =1

現時点では、誕生日が7日以内のすべての人を除外しますが、月末のシナリオや年末などには対応できないと思います。

4

3 に答える 3

2

これがMySQLであるとすると、DAYOFYEAR関数を使用して、誕生日が発生する年の日を取得できます。単純なシナリオは、1月1日から12月25日までのすべてで、同じ年に7日先があります。これには、次のものを使用できます。

SELECT  *
FROM    `QG04c`
WHERE   DAYOFYEAR(DOB) - DAYOFYEAR(CURDATE()) BETWEEN 0 AND 7;

ただし、今日が12月25日から12月31日の間の場合、誕生日が1月1日から6日の間であることを考慮する必要があります。これを行うには、次のことが必要です。

SELECT  *
FROM    `QG04c`
WHERE   DAYOFYEAR(CURDATE() + INTERVAL 7 DAY) < 7
AND     DAYOFYEAR(DOB) < DAYOFYEAR(CURDATE() + INTERVAL 7 DAY);

次に、2つのケースを組み合わせるだけです。

SELECT  *
FROM    `QG04c`
WHERE   DAYOFYEAR(DOB) - DAYOFYEAR(CURDATE()) BETWEEN 0 AND 7
OR  (   DAYOFYEAR(CURDATE() + INTERVAL 7 DAY) < 7
    AND DAYOFYEAR(DOB) < DAYOFYEAR(CURDATE() + INTERVAL 7 DAY)
    );

SQLフィドルの例

于 2013-02-28T12:31:17.330 に答える
0
select * from tablename WHERE [ColumnName] BETWEEN DATEADD(DAY, +7, @YourDate) AND @YourDate and Primary Unit = 1 (If you have and condition put add here)

ありがとう 。

于 2013-02-28T11:27:54.820 に答える
0

あなたがその日を分解しなければ簡単なはずですか?

WHERE `dob` BETWEEN now() AND now() +7
于 2013-02-28T11:28:02.573 に答える