嘿,我是 SQL 的初学者,但我正在尝试编写一个查询来提取 future 7 天内某人生日的所有记录,并查看了其他线程的答案,但我有无法使它们适应我的设置。
SELECT *
FROM `QG04c`
WHERE month( `dob` ) = month( now( ) )
AND day( `dob` )
BETWEEN day( now( ) )
AND day( now( ) ) +7
AND `Primary Unit?` =1
目前,这会拉出所有生日在 7 天内的人,但我认为它无法应对月末和年底等情况。
最佳答案
假设这是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);
那么只需将两种情况结合起来即可:
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)
);
关于mysql - SQL生日查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134206/