-1

我正在尝试使用 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

错误是什么?

4

3 回答 3

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'
于 2012-08-21T08:37:08.490 回答
3

仅仅减去年份实际上并不能给出您的年龄——就好像每个人都出生在 1 月 1 日一样。尝试只做一个 datediff:

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

请记住:在文字值周围加上引号(如 'user254' 或 'John'),但不要在表名或列名周围加上常规引号!您将需要对这些使用 backtikcs (`)。

于 2012-08-21T08:40:59.613 回答
0

试试这个:

SELECT ( YEAR(NOW()) - YEAR(birthdate) - 
(DATE_FORMAT(NOW(), '%m%d') < DATE_FORMAT(birthdate, '%m%d'))
AS age) FROM register WHERE 'reg_id' = user254
于 2012-08-21T08:41:08.613 回答