MySQL查询员工入职周年时如何正确处理年/月单复数别名
SQL员工工龄字段单复数格式修正方案
通过CASE WHEN条件判断匹配单复数单位后拼接即可,匹配规则如下:
- 年数计算结果为1时,单位使用
Year,为0或大于1时使用Years - 扣除整年后的剩余月数计算结果为1时,单位使用
month,为0或大于1时使用months
修正后完整SQL
SELECT emp_no, join_date, join_date + INTERVAL (EXTRACT(YEAR FROM CURDATE()) - EXTRACT(YEAR FROM join_date)) YEAR AS anniversary_date_this_year, CONCAT( TIMESTAMPDIFF(YEAR, join_date, CURDATE()), ' ', CASE WHEN TIMESTAMPDIFF(YEAR, join_date, CURDATE()) = 1 THEN 'Year' ELSE 'Years' END, ' ', TIMESTAMPDIFF(MONTH, join_date, CURDATE()) % 12, ' ', CASE WHEN TIMESTAMPDIFF(MONTH, join_date, CURDATE()) % 12 = 1 THEN 'month' ELSE 'months' END ) AS FinalYear FROM emp_detail;
常见场景输出参考
- 入职满1年整:
1 Year 0 months - 入职满1年1个月:
1 Year 1 month - 入职3个月(不满1年):
0 Years 3 months - 入职满5年整:
5 Years 0 months
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

