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
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
相关文章推荐
- excel 根据身份证号码自动提取出生年月、性别、年龄的方法实例
- Excel表格中根据身份证号获取出生日期、生日、年龄、性别、工龄、退休龄
- 身份证号码中,年龄、性别的提取方法
- 根据身份证判断一个人的年龄,性别
- 基于javascript实现根据身份证号码识别性别和年龄
- 根据身份证号码计算出生日期、年龄、性别(18位) 根据入职时间计算工龄。
- MySql 根据身份证号获取省份、年龄、性别
- 根据身份证号码计算出生日期、年龄、性别(18位)
- 根据身份证号,使用Java编写程序获取年龄、性别、出生日期
- IOS 根据身份证号码获取 年龄 生日 性别
- sqlalchemy 模型中添加根据身份证号计算性别和年龄
- js实现根据身份证号码识别 性别 年龄 生日
- Oracle根据身份证号码判断性别,年龄
- 在EXCEL中根据身份证号码计算年龄、出生年月、性别
- js简单实现根据身份证号码识别性别年龄生日
- mysql根据身份证查询年龄,地址,性别
- java根据身份证号和获取用户年龄和性别的工具类
- hive根据身份证号判断性别
- Java-根据身份证号获取年龄,性别,出生日期
- mysql根据身份证查询年龄,地址,性别