在MySQL中选择年龄时出错

时间:2012-08-21 08:33:31

标签: mysql syntax-error

我试图通过MySQL获得多年的差异,但在选择相同内容时显示错误。

SELECT(
    DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT('birthdate', '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT('birthdate', '00-%m-%d')) AS age
) FROM register where 'reg_id' = user254

错误是什么?

3 个答案:

答案 0 :(得分:3)

试试这个:

SELECT (YEAR(NOW()) - YEAR(birthdate)) AS age) 
FROM register 
WHERE reg_id = 'user254'

或(如建议here

SELECT (YEAR(NOW()) - YEAR(birthdate) - 
        (DATE_FORMAT(NOW(), '%m%d') < DATE_FORMAT(birthdate, '%m%d'))) AS age 
FROM register
WHERE reg_id = 'user254'

答案 1 :(得分:3)

只是减去这些年份实际上并没有给你这个年龄 - 就好像每个人都出生在1月1日。试着做一个约会:

SELECT FLOOR((DATEDIFF(NOW(),birthdate))/365)
FROM register 
WHERE reg_id = 'user254'

请记住:在文字值(例如'user254'或'John')周围加上引号,但不会在表名或列名周围加上常规引号!你会想要使用backtikcs(`)。

答案 2 :(得分:0)

试试这个:

SELECT ( YEAR(NOW()) - YEAR(birthdate) - 
(DATE_FORMAT(NOW(), '%m%d') < DATE_FORMAT(birthdate, '%m%d'))
AS age) FROM register WHERE 'reg_id' = user254