MySQL基于出生日期计算年龄
我正在尝试使用SQL语句根据MySQL中的生日计算年龄 我的出生日期是varchar(),格式是:1994年11月29日(DD/MM/YYYY) 我的SQL语句:MySQL基于出生日期计算年龄,mysql,sql,date,Mysql,Sql,Date,我正在尝试使用SQL语句根据MySQL中的生日计算年龄 我的出生日期是varchar(),格式是:1994年11月29日(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 workben
SELECT DATEDIFF(YY, birthDate, GetDate()) AS Age
FROM bookedevent be INNER JOIN account a
ON be.bookedEventBY = a.accountName WHERE a.accountID = 1
然而,当我在MySQL workbench中测试时,我得到了以下错误消息:调用DATEDIFF中的参数计数不正确
有导游吗
提前感谢。您正在MySQL中使用SQL Server语法。那不行。您可以使用
TIMESTAMPDIFF()
:
请注意,TIMESTAMPDIFF()
的语义不同于SQL Server中的DATEDIFF()
。但是,TIMESTAMPDIFF()
可能更接近您真正想要的内容。使用此代码
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;
选择日期格式(现在(),'%Y')-日期格式(出生日期,'%Y')-(日期格式(现在(),'00-%m-%d')<日期格式(出生日期,'00-%m-%d'))作为年龄
从bookedevent内部连接
帐户a
ON be.bookedEventBY=a.accountName
其中a.accountID=1;
当我测试SQL时,我得到了空值。是不是因为我的生日列是varchar()?可能吧。您应该将日期存储为日期,而不是字符串。是否要将字符串转换为日期?因为我无法更改该表的数据结构,因为我的朋友也在使用它,尽管我已经得到了它。您可以这样做:str_to_date(例如,eventDate,'%d/%m/%Y')。谢谢!有没有办法把1-10岁的人分成一组。然后将11-20作为另一个使用SQL语句的组使用?使用date(GetDate())-而不是缺少birthDate
的对象吗?不正确的内部联接
,因为您没有指定出生日期
所属的位置。要么是。出生日期
要么是。出生日期
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;