我正在研究一个搜索表单,用户可以选择从到的年龄。然后根据搜索显示结果。
我的表有这些(name、dob、emailid、mobileno)列
这是我的问题
SELECT name,dob, YEAR(CURDATE()) - YEAR(dob) AS age AND age (BETWEEN '25' AND '30') FROM users
在这里,我可以根据 dob(DateofBirth) 获取年龄,但无法在查询之间运行...
怎么做?我是不是漏掉了什么?
请帮助我。
提前致谢
最佳答案
除了查询中的一些语法错误外,主要问题是:您不能在 SELECT 列
中使用别名 - 您的查询的一部分在 WHERE
中-部分。这与 SQL 在 SELECT 列
之前执行 WHERE
这一事实有关。只需将您的公式也包含在 WHERE
部分:
SELECT
name,
dob,
YEAR(CURDATE()) - YEAR(dob) AS age
FROM users
WHERE YEAR(CURDATE()) - YEAR(dob) BETWEEN '25' AND '30'
旁注:看看问题 How to calculate age (in years) based on Date of Birth and getDate()因为您的公式并不总是给出正确的结果(例如,对于出生日期“2000 年 12 月 1 日”和当前日期“2017 年 7 月 29 日”,它返回 17,而它应该是 16)
关于php - 如何在使用 mysql php 查询别名列之间运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388172/