我正在尝试使用 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
错误是什么?
我正在尝试使用 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
错误是什么?
试试这个:
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 月 1 日一样。尝试只做一个 datediff:
SELECT FLOOR((DATEDIFF(NOW(),birthdate))/365)
FROM register
WHERE reg_id = 'user254'
请记住:在文字值周围加上引号(如 'user254' 或 'John'),但不要在表名或列名周围加上常规引号!您将需要对这些使用 backtikcs (`)。
试试这个:
SELECT ( YEAR(NOW()) - YEAR(birthdate) -
(DATE_FORMAT(NOW(), '%m%d') < DATE_FORMAT(birthdate, '%m%d'))
AS age) FROM register WHERE 'reg_id' = user254