我是Hive-Hadoop的新手。我在日期间隔管理方面遇到了一些问题。
在Postgresql中,我可以在给定日期之前获得“6天”:
select max(datejour) + INTERVAL '-6 day' as maxdate from table
例如:if max(datejour)= 2015-08-22 ==>我的查询返回2015-08-15
有人可以帮助我,我怎么能在Hive中做到这一点?
感谢。
答案 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