hive根据出生日期算年龄-粗略版

现在是需要根据表里给出的出生日期算出今年的年龄。写法其实是比较绕的。

首先是需要得到当前的时间

select from_unixtime(unix_timestamp(),'yyyy-MM-dd')
> 2022-04-28

因为给出的表里的出生日志是yyyyMMdd格式的,datediff
只支持日期属性或者yyyyMMdd格式的时间差。所以还需要转换一下

select from_unixtime(unix_timestamp('20080520','yyyyMMdd'),'yyyy-MM-dd');
> 2008-05-20

然后计算年龄

select floor(datediff(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),from_unixtime(unix_timestamp('20080520','yyyyMMdd'),'yyyy-MM-dd'))/365);
> 14

先计算天数差,然后除以365,之后取整即可。这是比较粗略的计算年龄。

其实我觉得更好的办法,用程序写一个hive函数,部署可能更直观一点。

你可能感兴趣的:(数据库,hive,sql)