我打算通过在其日期键中添加366 days
来扩展表中的某些记录:
to_date(date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd'), 'yyyy-MM-dd'), 366))
as new_date
2016年1月1日
但是如何将此值转换回原始密钥的格式,即20160101
?
答案 0 :(得分:0)
date_add
为您提供日期类型作为输出。
由于您已使用from_unixtime
和unix_timestamp
,我们假设您已经了解其功能。
在Hive / Impala中,没有像MySQL / MariaDB这样的原生DATE_FORMAT
函数,因此您必须将 date_add
的输出转换为< strong> unix_timestamp
,然后在输出中使用 from_unixtime
以获得所需的格式。
有些事情:
select
from_unixtime(unix_timestamp(
date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd')), 365)),
'yyyyMMdd');
答案 1 :(得分:0)
由于您要求的日期是2016-01-01,因此您似乎想要添加365天而不是366。
select from_unixtime(unix_timestamp(date_add(from_unixtime(unix_timestamp(
'20150101','yyyyMMdd')),365),'yyyy-MM-dd'),'yyyyMMdd');
演示
hive> select from_unixtime(unix_timestamp(date_add(from_unixtime(unix_timestamp(
> '20150101','yyyyMMdd')),365),'yyyy-MM-dd'),'yyyyMMdd');
OK
20160101