php mysql怎样根据数据库表中的出生日期搜索出年龄大于65岁的记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php mysql怎样根据数据库表中的出生日期搜索出年龄大于65岁的记录相关的知识,希望对你有一定的参考价值。

这句sql可以根据出生日期字段计算出每条记录的年龄:
SELECT *, CURDATE(),(YEAR(CURDATE())-YEAR(csrq))- (RIGHT(CURDATE(),5)<RIGHT(csrq,5)) AS age FROM information

我是这么写的:
SELECT *, CURDATE(),(YEAR(CURDATE())-YEAR(csrq))- (RIGHT(CURDATE(),5)<RIGHT(csrq,5)) AS age FROM information where age>65
但是报错。。。。

不知道你的语句报什么错,我认为你不应该使用right来取日期里面的你、月、日,应该使用YEAR、MONTH、DAY函数

另外,你不能使用SELECT后面的别名作为WHERE的条件,必须使用数据库表的字段作为条件,你要获取65岁以上的可以使用这样:
WHERE csrq<MAKEDATE(YEAR(NOW())-65, DAYOFYEAR(NOW()))
参考技术A SELECT * FROM 表 WHERE YEAR(NOW())-YEAR(生日字段) > 65追问

你好,你这个是不精确的,我需要精确到天。能再详细点吗?

追答

SELECT DATEDIFF(CURDATE(),'1980-01-01') > 65*365

按每年365天计算,65*365 = 天数 DATEDIFF(CURDATE(),生日字段) 计算相差天数 > 65*365

SELECT * FROM 表 WHERE DATEDIFF(CURDATE(),生日字段) > 65*365

追问

你好,你这个还是不精确的哦,例如我数据表中有一条记录是1947-04-30,通过这条sql查询出来已经大于65岁了,然而正确的要后天才满65岁。能不能再完善下呢?

参考技术B SELECT * FROM information where unix_timestamp(now()) - unix_timestamp(csrq) > 65 * 365 * 24 * 3600;

以上是关于php mysql怎样根据数据库表中的出生日期搜索出年龄大于65岁的记录的主要内容,如果未能解决你的问题,请参考以下文章

在MySql中、怎样根据年份或者月份查询数据表中的数据?

mysql中根据输入的年龄查询符合该年龄出生日期的数据

MySQL根据出生日期计算年龄的五种方法比较

在MySql中、怎样根据年份或者月份查询数据表中的数据?

MySQL通过出生日期计算年龄

如何在数据库中利用sql从18位身份证号中截取出生日期,身份证号在reader表中