我正试图在一周内让人们出生。今天是1月3日。当我试图获得本周的生日时,它不包括本周所属的12月生日。我的sql查询如下。这有什么不对?
select id, birth, full_name, mobile, email
from house_holders
where Week(DATE_ADD( birth, INTERVAL year(NOW()) - year(birth) YEAR),1) = week(NOW(),1);
答案 0 :(得分:0)
条件为Week(DATE_ADD( birth, INTERVAL year(NOW()) - year(birth) YEAR),1) = week(NOW(),1);
时,您只能获得与今天相关的出生日期。
这是因为Week(DATE_ADD( '2014-12-29', INTERVAL year(NOW()) - year('2014-12-29') YEAR),1)
的结果是53
,而week(NOW(),1);
的结果是1
,那么您将永远无法获得所需的结果。事实上,像'2014-12-29'
这样的日期被视为2014年最后一周的一部分,而不是当前的2015年。
如果您想获得当周的出生日期,您应该使用 DATE_ADD() function
以及 DAYOFWEEK() function
来过滤出生日期:
SELECT id, birth
FROM house_holders
WHERE birth >= DATE_ADD(CURDATE(), INTERVAL 1-DAYOFWEEK(CURDATE()) DAY)
AND birth <= DATE_ADD(CURDATE(), INTERVAL 7-DAYOFWEEK(CURDATE()) DAY);
查看演示here。