首先要理解,过了生日年龄要比不过生日大一岁,这个属性要严格控制。
思路的话就是
1、计算当前的年份+用户的生日和当前日期相差的天数
2、如果当前日期和当前年份+用户生日的日期相差的天数大于等于0,则岁数是年份年用户生日年份
2.、否则-1;
select cast(if(datediff(CURRENT_DATE(),CONCAT(substr(CURRENT_DATE(),1,4),substr('1996-02-02',5,7)))>=0,
(substr(CURRENT_DATE(),1,4) - substr('1996-02-02',1,4)),
(substr(CURRENT_DATE(),1,4) - substr('1996-02-02',1,4)-1)) as int) as age;