【问题标题】:Calculating Age from Date of Birth with where condition on Age in MySQL从出生日期计算年龄与 MySQL 中年龄的 where 条件
【发布时间】:2016-02-21 17:09:04
【问题描述】:

如何再次以where条件计算年龄?我只希望所有年龄

我的查询在没有 where 条件的情况下工作正常,但是当我添加 WHERE age < 50 时,它给了我一个错误 #1054 - Unknown column 'age' in 'where clause'

SELECT u.*, YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < 
RIGHT(u.user_dob, 5)) as age FROM tbl_users as u WHERE age < 50 

【问题讨论】:

  • 不能在 where 子句中使用别名

标签: mysql sql database date


【解决方案1】:

像这样更简单的东西怎么样?

where dob >= date_sub(curdate(), interval 50 year)

如果要年龄,可以取年差:

select timestampdiff(year, dob, curdate())

【讨论】:

  • 是的,你是对的,其中 dob >= date_sub(curdate(), interval 50 year) 是最好和更简单的
【解决方案2】:

在 where 子句中更新你的年龄:

YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (
RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5))

成为:

SELECT u.*, YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (
RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5)) AS age
FROM tbl_users AS u
WHERE YEAR(CURRENT_TIMESTAMP) - YEAR(u.user_dob) - (
RIGHT(CURRENT_TIMESTAMP, 5) <
RIGHT(u.user_dob, 5)) < 50

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多