如何从没有年龄列mysql的dob获取两个年龄段之间的用户详细信息

时间:2018-04-29 04:53:45

标签: mysql

我想了解从出生日期起两个年龄段之间用户的详细信息。我的条件是,

  1. 从DOB计算年龄
  2. 查找两个年龄段之间的用户详细信息
  3. 我的表是,

    id    username    phone    dob
    -------------------------------------
    1     Jithin     123456    31/12/1990
    2     Binoy      235612    12/12/1991
    3     Jibin      353453    12/12/1996
    

    我已创建mysql查询,如下所示

    SELECT username, DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(dob, '00-%m-%d')) AS age FROM tbl_user WHERE age BETWEEN 20 AND 30
    

    但上面的代码显示错误the column age not found。如何解决这个问题。从age查找dob并进行比较的替代方法。

2 个答案:

答案 0 :(得分:1)

您可以使用subquery

SELECT *
FROM (SELECT  username,
        DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - 
        (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(dob, '00-%m-%d')) AS age 
    FROM tbl_user) sub
WHERE sub.age BETWEEN 20 AND 30;

来自age子句的SELECT列在同一级别的WHERE中不可见。您可以使用子查询包装它,也可以重复整个表达式。

答案 1 :(得分:1)

它无效,因为您无法立即使用别名。在其周围使用子查询或重复计算。有一种更短的计算方法:

SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age
from tbl_user 
where TIMESTAMPDIFF(YEAR, dob, CURDATE()) between 20 and 30