如何在hive中管理日期间隔

nlejzf6q  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(329)

我是新来的hadoop。我在日期间隔管理方面有些问题。
在postgresql中,我可以得到给定日期前的“6天”:

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

e、 g:如果max(datejour)=2015-08-22==>我的查询返回2015-08-15
有人能帮我在Hive里怎么做吗?
谢谢。

jucafojl

jucafojl1#

您可以使用date\u子函数来获取您的需求。查询可能如下所示(在您的情况下):

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;
gdx19jrr

gdx19jrr2#

您可以使用配置单元间隔来实现这一点。
从表中选择(max(datejour)-interval“6”day)作为maxdate
以上查询应返回2015-08-15
你可以找到更多细节-https://cwiki.apache.org/confluence/display/hive/languagemanual+types

hvvq6cgz

hvvq6cgz3#

因为在配置单元中不可能使用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;
5hcedyr0

5hcedyr04#

您可以使用配置单元日期内置函数来实现这一点

select date_sub('2015-08-22', 6) from table

以上查询应返回 2015-08-15 您可以在此处找到更多配置单元内置功能:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf#languagemanualudf-日期函数
希望他的帮助

相关问题