表名: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