嘿,我有点像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天之内的人,但我认为它不会应对月末情景和年终等。
答案 0 :(得分: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);
然后只是将两种情况结合起来的问题:
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)
);
<强> Examples on SQL Fiddle 强>
答案 1 :(得分: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)
谢谢。
答案 2 :(得分:0)
如果你不分解那一天应该很容易吗?
WHERE `dob` BETWEEN now() AND now() +7