假设有一张用户表 t_user ,该表设计如下:
id: character varying 主键
name: character varying 姓名
idcard: character varying 身份证号
gender: smallint 性别,女是0,男是1
birthday: date 生日
根据身份证号获取生日字符串:
select
substring(idcard,7,4) || '-' || substring(idcard,11,2) || '-' || substring(idcard,13,2)
from t_user where char_length(idcard)=18;
可以用 date 函数把生日字符串转换成date类型,同时可以检测返回的日期字符串是否正确。
select
date(
substring(idcard,7,4) || '-' || substring(idcard,11,2) || '-' || substring(idcard,13,2)
)
from t_user where char_length(idcard)=18;
根据身份证号更新生日字段
update t_user set
birthday=date(
substring(idcard,7,4) || '-' || substring(idcard,11,2) || '-' || substring(idcard,13,2)
)
where char_length(idcard)=18 and birthday is null;