查询语句的GreenPlum SQL到HiveSQL迁移

查询语句的GreenPlum SQL到HiveSQL迁移,hive,hiveql,greenplum,Hive,Hiveql,Greenplum,我们必须将GreenPlum SQL迁移到HIVESQL,如下所述,请帮助我们 to_date(b.birthday,'yyyymmddhh24miss') extract(year from age(iDATE, to_date(b.birthday,'yyyymmddhh24miss'))) 上面的两条语句需要将SQL转换为配置单元。请帮帮我 蜂巢版本:3.1.X相当于'yyyymmddhh24miss'的生日 是 然而,我不理解这一年从年龄到生日“yyyymmddhh24miss”。你需

我们必须将GreenPlum SQL迁移到HIVESQL,如下所述,请帮助我们

to_date(b.birthday,'yyyymmddhh24miss')
extract(year from age(iDATE, to_date(b.birthday,'yyyymmddhh24miss')))
上面的两条语句需要将SQL转换为配置单元。请帮帮我

蜂巢版本:3.1.X

相当于'yyyymmddhh24miss'的生日 是

然而,我不理解这一年从年龄到生日“yyyymmddhh24miss”。你需要不同的生日和出生日期吗? 如果是,您可以使用以年为单位获取日期差

datediff(iDate,from_unixtime(unix_timestamp(b.birthday,'yyyyMMddHHmmss')) )/365

Hive还具有从datetimestamp提取年份的功能。

提取时间戳的另一种方法是使用regexp\u 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,'^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})$','$1-$2-$3 $4:$5:$6')
             )/365.25 as int)

选择extractyear,从年龄'2021-04-21',到日期'2021-04-25','yyyymmddhh24miss'-是的,我们只是通过idate,因为参数表不支持hiveSQL,相反,我们可以如何使用?您可以计算年龄-我认为这是一年中日期之间的差异。因此,使用datediff找出日期的差异,然后将其除以365.25,得到确切的年份差异。如果需要,您可以将其转换为INT。您好,我们如何将LPADEXACT'hour'从时间戳转换为2,0作为事件时间-?时间戳是column@karthikelavan请创建另一个问题,不要在评论中提出新问题。此外,如果答案有效,请不要忘记接受/投票
cast(datediff(current_date,
             regexp_replace(b.birthday,'^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})$','$1-$2-$3 $4:$5:$6')
             )/365.25 as int)