现在是需要根据表里给出的出生日期算出今年的年龄。写法其实是比较绕的。
首先是需要得到当前的时间
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函数,部署可能更直观一点。