sql week关键字不包括早年

时间:2015-01-03 10:47:39

标签: mysql sql

我正试图在一周内让人们出生。今天是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);

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