如何管理配置单元中的日期间隔

时间:2015-09-29 15:09:24

标签: hadoop hive

我是Hive-Hadoop的新手。我在日期间隔管理方面遇到了一些问题。

在Postgresql中,我可以在给定日期之前获得“6天”:

select max(datejour) + INTERVAL '-6 day' as maxdate from table

例如:if max(datejour)= 2015-08-22 ==>我的查询返回2015-08-15

有人可以帮助我,我怎么能在Hive中做到这一点?

感谢。

4 个答案:

答案 0 :(得分:1)

您可以使用DATE_SUB函数来满足您的要求。 查询可能如下所示(在您的情况下):

select DATE_SUB(from_unixtime(unix_timestamp(cast(MAX(t1.max_date) AS string) ,'yyyy-MM-dd'), 'yyyy-MM-dd'), 6) from (select MAX(datejour) as max_date from table) t1 group by t1.max_date;

答案 1 :(得分:1)

您可以使用Hive Date内置函数来实现此目的

(?i)

以上查询应返回RAM

您可以在此处找到更多Hive内置功能:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

希望他的帮助

答案 2 :(得分:0)

由于在hive中无法使用UPDATE命令更新记录,因此不建议通过alter命令添加列,因为您必须通过相同的表在其中插入值。

create external table test(
  fields1 string,
  field2 string)

create external table test(
  fields1 string,
  field2 string,
  h01 string
  )

Insert overwrite table table2 
select 
fields1,
field2,
case when fields1 = '' then 'OK' else 'KO' end as h01 from table1 where your_condition;

答案 3 :(得分:0)

您可以使用Hive INTERVAL来实现此目的。

选择(max(datejour) - INTERVAL' 6' DAY)作为表格的最大值

以上查询应返回 2015-08-15

您可以找到更多详情 - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types