我正在使用SQL语句基于MySQL中的birthDate尝试calculate the age
。
我的birthDate是varchar(),格式为:29/11/1994(DD / MM / YYYY)。
我的SQL声明:
SELECT DATEDIFF(YY, birthDate, GetDate()) AS Age
FROM bookedevent be INNER JOIN account a
ON be.bookedEventBY = a.accountName WHERE a.accountID = 1
但是,当我在MySQL工作台中测试时,我收到此错误消息:调用DATEDIFF中的参数计数不正确。
ANy指南?
提前致谢。
答案 0 :(得分:2)
您在MySQL中使用SQL Server语法。那不行。您可以使用TIMESTAMPDIFF()
:
SELECT TIMESTAMPDIFF(YEAR, birthDate, CURDATE()) AS Age
FROM bookedevent be INNER JOIN
account a
ON be.bookedEventBY = a.accountName
WHERE a.accountID = 1;
请注意TIMESTAMPDIFF()
的语义与SQL Server中DATEDIFF()
的语义不同。但是,TIMESTAMPDIFF()
可能更接近您真正想要的内容。
答案 1 :(得分:0)
使用此代码
SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthDate, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthDate, '00-%m-%d')) AS age
FROM bookedevent be INNER JOIN
account a
ON be.bookedEventBY = a.accountName
WHERE a.accountID = 1;