如何用SQL从employees表计算最年轻员工的年龄(以年为单位)
计算最年轻员工的年龄
针对你使用sysdate的场景(推测是Oracle数据库),可以用MONTHS_BETWEEN函数来准确计算年龄,它会自动处理"生日未到需减1岁"的情况,避免直接按年份相减的误差:
SELECT FLOOR(MONTHS_BETWEEN(SYSDATE, MAX(Birthdate)) / 12) AS youngest_age FROM employees;
其他常见数据库的写法
如果是其他数据库,也可以用对应内置函数实现准确计算:
- MySQL/MariaDB:用
TIMESTAMPDIFF直接返回准确年龄SELECT TIMESTAMPDIFF(YEAR, MAX(Birthdate), CURDATE()) AS youngest_age FROM employees; - SQL Server:需要判断生日是否已过,调整年份差
SELECT DATEDIFF(YEAR, MAX(Birthdate), GETDATE()) - CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, MAX(Birthdate), GETDATE()), MAX(Birthdate)) > GETDATE() THEN 1 ELSE 0 END AS youngest_age FROM employees;
内容的提问来源于stack exchange,提问作者Rayman
相关产品推荐
相关产品推荐

