在DB中我有一个包含用户生日的字段。示例:01.09.1994 我有一个PHP函数来计算用户的出生。 现在我想做的事情: 我想搜索18岁以上的所有用户,但我想在sql查询中执行此操作。怎么会发生这种情况?
"SELECT * FROM `users` WHERE `birth` = '18'"
如何用sql自动将出生(01.09.1994)变成年龄,没有得到结果,然后用PHP转换生日?
答案 0 :(得分:1)
您保存的日期不是真实日期,需要使用str_to_date
功能转换为实际日期,然后使用timestampdiff
即可获得年龄
mysql> select timestampdiff(year,str_to_date('01.06.1993','%d.%m.%Y'),curdate()) as age ;
+------+
| age |
+------+
| 21 |
+------+
因此,如果表格中的列名为dob
,并且您想查找年龄= 18的所有用户,则可以
select * from users
where
timestampdiff(year,str_to_date(dob,'%d.%m.%Y'),curdate()) = 18