hive如何精确计算年龄

ps:本文是用出生日期,如果是取身份证号的,只需该

select
    id,
    name,
    case
        when id < "2" then "1匹配上"
     end as res
from tab;

隐士转换 int类型id在计算时比较"2" string类型的"2"转换成int类型的2

select
    id,
    name,
    case
        when id = 2 then "1匹配上"
    else
        "1没匹配上"
    end as res
from tab;

create table tab2 as
select
    tmp.id,
    tmp.name,
    tmp.birthday,
    tmp.age1,
    case
        when tmp.age1 >= 0 and tmp.age1 < 10 then "少年"
        when tmp.age1 >= 10 and tmp.age1 <20 then "青少年"
        when tmp.age1 >= 20 and tmp.age1 <30 then "青年"
    else "中年"
    end as nld,
    tmp.age2
from
    (select
        id,
        name,
        birthday,
        cast(if(datediff(CURRENT_DATE,CONCAT(substr(CURRENT_DATE,0,4),substr(birthday,5,7)))>=0,
        (substr(CURRENT_DATE,0,4) - substr(birthday,0,4)),
        (substr(CURRENT_DATE,0,4) - substr(birthday,0,4)-1)) as int) as age1,
        cast(if(datediff(CURRENT_DATE,CONCAT(substr(CURRENT_DATE,0,4),substr('2015-03-04',5,7)))>=0,
        (substr(CURRENT_DATE,0,4) - substr('2015-03-04',0,4)),
        (substr(CURRENT_DATE,0,4) - substr('2015-03-04',0,4)-1)) as int) as age2
    from tab) tmp;

切割年
select
    id,
    name,
    birthday,
    substr(birthday,6,5)
from tab;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗少说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值