PHP和SQL |查询中的具体事情

时间:2015-04-10 19:07:36

标签: php mysql

在DB中我有一个包含用户生日的字段。示例:01.09.1994 我有一个PHP函数来计算用户的出生。 现在我想做的事情: 我想搜索18岁以上的所有用户,但我想在sql查询中执行此操作。怎么会发生这种情况?

"SELECT * FROM `users` WHERE `birth` = '18'"

如何用sql自动将出生(01.09.1994)变成年龄,没有得到结果,然后用PHP转换生日?

1 个答案:

答案 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