需求:查看最近20天过生日的客户
网上找了半天没有找到正确的解决方案,给大家分享下我的结果:
思路:分两种情况,
第一种:客户月日在现在月日之后,计算今年生日到现在的天数。
第二种:客户月日在现在月日之前,计算明年生日到现在的天数。
select
*
from t_investor
where
birthday is not null
and (
case
when DATE_FORMAT(birthday,'%m%d') >= DATE_FORMAT(now(),'%m%d')
then TIMESTAMPDIFF(DAY, now(), concat( year(curdate()) , substring(birthday, 5) ))
else TIMESTAMPDIFF(DAY, now(), concat( year(curdate())+1, substring(birthday, 5) ))
end ) <= 20