GreenPlum SQL 到 HiveSQL 查询语句的迁移

问题描述

我们必须按照以下语句将 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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...