您的位置:首页 > 数据库

Hive 根据身份证规则从身份证号提取年龄和性别

2017-10-23 11:41 671 查看
身份证号的规则不再赘述,需要注意目前一些老数据还是存在15位的身份证号,代码如下:

select id_no, id_no,
case when length(id_no) = 18 then
floor(datediff( from_unixtime(unix_timestamp(),'yyyy-MM-dd'),
concat_ws('-',substr(id_no,7,4),substr(id_no,11,2),
substr(id_no,13,2)
)
)/365 )
when length(id_no) = 15 then
floor(datediff( from_unixtime(unix_timestamp(),'yyyy-MM-dd'),
concat('19',substr(id_no,7,2),
'-', substr(id_no,9,2),
'-', substr(id_no,11,2)
)
)/365 )
else null end as age,
case when length(id_no) = 18 then
case when substr(id_no,17,1)%2 = 0 then 'F'
when substr(id_no,17,1)%2 <> 0 then 'M'
else null end
when length(id_no) = 15 then
case when substr(id_no,15)%2 = 0 then 'F'
when substr(id_no,15)%2 <> 0 then 'M'
else null end
else null end as sex
from xx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hive sql