我试图通过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
错误是什么?
答案 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