sql 根据身份证号获取出生日期并转成对应格式

发布时间 2023-11-09 12:00:39作者: qingjiawen

 

sql server

 

查询判断身份证号是18位的

select    SUBSTRING(SUBSTRING(IDCard,7,8),1,4)+'-'+SUBSTRING(SUBSTRING(IDCard,7,8),5,2)+'-'+SUBSTRING(SUBSTRING(IDCard,7,8),7,2) fromwhere    Birthday is null and LEN(IDCard)=18

 

修改

update 表set Birthday=SUBSTRING(SUBSTRING(IDCard,7,8),1,4)+'-'+SUBSTRING(SUBSTRING(IDCard,7,8),5,2)+'-'+SUBSTRING(SUBSTRING(IDCard,7,8),7,2) where   Birthday is null and LEN(IDCard)=18
 

 

oracle

SELECT (SUBSTR(IdNumStr,7,8 ))  FROM DUAL;

 

输出是年月日字符串。再转换为对应需要的时间格式,例YYYY-MM-DD

SELECT to_char(to_date((SUBSTR(IdNumStr,7,8 )),'yyyy-mm-dd'),'yyyy-mm-dd')  FROM DUAL;

 

create function     U_GET_BIRTH(IDNUM in varchar2) return varchar2 as
begin
    --根据身份证号取得对应的出生年月日,并转换为对应的日期格式
    return to_char(to_date((SUBSTR(IDNUM ,7,8 )),'yyyy-mm-dd'),'yyyy-mm-dd');
end;