Mysql:如果知道一个用户的出身日期,如何统计他的退休年龄是那一年

博客围绕统计报表业务展开,需在企业用户表中统计所有员工退休日期形成定时任务。当员工距退休还有60天,定时任务会短信发名单给人事部办理手续。要求显示60天退休人员信息,区分男女及女性岗位退休年龄。还给出了相关代码及结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务需求
今天获得一个统计报表的业务:
在一个企业用户表中(详细字段不写),现需要统计所有员工的退休日期形成一个定时任务,在定时任务中,如果员工接近还有60天,定时任务会短信发名单给人事部。人事部专员办理退休手续
要求:
1、只显示还有60天就退休的人员信息
2、男的年龄是60岁退休
3、女的年龄是55岁退休(其中工人岗的是50岁退休)
代码如下

select position_hiera,user_name,birth,age,gender,post_type,DATE_ADD(birth,INTERVAL 60 YEAR) retire_date,'21900'-TIMESTAMPDIFF(DAY,birth,now()) as surplus_days from rost_use where gender='男' and '21900'-TIMESTAMPDIFF(DAY,birth,now())>0 and '21900'-TIMESTAMPDIFF(DAY,birth,now())<=60
UNION all
select position_hiera,user_name,birth,age,gender,post_type,DATE_ADD(birth,INTERVAL 50 YEAR) retire_date,'18250'-TIMESTAMPDIFF(DAY,birth,now()) as surplus_days from rost_use where gender='女' and post_type = '工人岗' and '18250'-TIMESTAMPDIFF(DAY,birth,now())>0 and 18250-TIMESTAMPDIFF(DAY,birth,now())<=60
UNION all
select position_hiera,user_name,birth,age,gender,post_type,DATE_ADD(birth,INTERVAL 55 YEAR) retire_date,'20075'-TIMESTAMPDIFF(DAY,birth,now()) as surplus_days from rost_use where gender='女' and post_type not in('工人岗') and '20075'-TIMESTAMPDIFF(DAY,birth,now())>0 and '20075'-TIMESTAMPDIFF(DAY,birth,now())<=60 

解析:

-- 出生日期+60年后转换成日期角色
DATE_ADD(birth,INTERVAL 60 YEAR) retire_date
-- 21900 = 60年*365日/年
-- 18250 = 50年*365日/年
-- 20075 = 55年*365日/年
-- mysql函数:【now()-出生日期】转换成天数【DAY】
TIMESTAMPDIFF(DAY,birth,now())

结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值