问题描述
我们必须按照以下语句将 GreenPlum sql 迁移到 HIVEsql,请帮助我们。
to_date(b.birthday,'yyyymmddhh24miss')
extract(year from age(iDATE,to_date(b.birthday,'yyyymmddhh24miss')))
以上两条语句需要将sql转换为HIVE。请帮帮我。
蜂巢版本:3.1.X
解决方法
相当于 to_date(b.birthday,'yyyymmddhh24miss')
是
from_unixtime(unix_timestamp(b.birthday,'yyyyMMddHHmmss'))
然而,我不明白这个extract(year from age(iDATE,to_date(b.birthday,'yyyymmddhh24miss')))
。你需要 iDate 和生日的区别吗?
如果是,您可以使用以年为单位的日期差异。
datediff(iDate,from_unixtime(unix_timestamp(b.birthday,'yyyyMMddHHmmss')) )/365
Hive 也有 extract (year from datetimestamp)
函数。
另一种提取时间戳的方法是使用 regexp_replace:
regexp_replace(b.birthday,'^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})$','$1-$2-$3 $4:$5:$6')
年龄是:
cast(datediff(current_date,regexp_replace(b.birthday,'$1-$2-$3 $4:$5:$6')
)/365.25 as int)