PLSQL 到 Hive 查询函数的对话

问题描述

我们正在尝试将 greenplum(postgresql) 迁移到 hive,并且以下 plsql 查询需要转换为 hivesql。请帮帮我。

Greenplum 函数查询语句。

select extract(days from ((date_trunc('MONTH',column1::date) + INTERVAL '1 MONTH - 1 day')::date)))::dec,2)::numeric daily;

select extract(year from column1)::character varying;

select extract(month from column2)::character varying;

注意:提取,天数在配置单元中不可用。请帮助我们。

我们需要转换 Hivesql

解决方法

extract 在 hive 2.2 及更高版本中可用。 可以看到下面sql的输出。

select extract(day from current_date) dy,extract(month from current_date) mon,extract(year from current_date) yr

enter image description here

现在回答您的问题,

select extract(days from ((date_trunc('MONTH',column1::date) + INTERVAL '1 MONTH - 1 day')::date)))::dec,2)::numeric daily;>

  • 我认为这是每月的最后一天。您可以使用 extract(day from last_day(column1))

select extract(year from column1)::character变量;

  • 您可以使用 cast ( extract(year from column1) as string)

请注意 hive 对数据类型非常敏感,我假设列在两种情况下都是日期时间。