MySQL根据birthDate计算年龄

时间:2014-12-22 03:50:39

标签: mysql sql date

我正在使用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指南?

提前致谢。

2 个答案:

答案 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;