mysq 根据身份证号计算退休时间(2025年版)

表名:106001_user    身份证号字段:ID_number

-- 男性65退休延迟月份计算
select
LEAST(36,FLOOR(1 + TIMESTAMPDIFF(MONTH,'1965-01-01',STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'))/4))
 from 106001_user 

-- 整体  女性75年1月之前的,法定退休年龄都是50岁,75年1月开始向后,每4个月延长1个月;男性65年1月之前的,法定退休年龄为60岁,之后每4个月延长1个月 。男的最多63 女的58 。

select  CASE  WHEN SUBSTRING(ID_number, 17, 1) % 2 = 0 THEN IF(STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d') <='1975-01-01',DATE_ADD(STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'), INTERVAL 50 YEAR),DATE_ADD((DATE_ADD(STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'), INTERVAL 50 YEAR)) , INTERVAL ( LEAST(96,FLOOR(1 + TIMESTAMPDIFF(MONTH,'1975-01-01',STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'))/4))) MONTH)) ELSE IF(STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d') <='1965-01-01',DATE_ADD(STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'), INTERVAL 60 YEAR), DATE_ADD((DATE_ADD(STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'), INTERVAL 60 YEAR)) , INTERVAL ( LEAST(36,FLOOR(1 + TIMESTAMPDIFF(MONTH,'1965-01-01',STR_TO_DATE(SUBSTRING(ID_number, 7, 8), '%Y%m%d'))/4))) MONTH))   END AS add_tuixiu from 106001_user  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值