我打算通过添加366 days
到它的日期键延伸在一个表中的某些记录:蜂房日期转换
to_date(date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd'), 'yyyy-MM-dd'), 366))
作为NEW_DATE
2016年1月1日
但是如何将这个值转换回原始密钥的格式,例如20160101
?
我打算通过添加366 days
到它的日期键延伸在一个表中的某些记录:蜂房日期转换
to_date(date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd'), 'yyyy-MM-dd'), 366))
作为NEW_DATE
2016年1月1日
但是如何将这个值转换回原始密钥的格式,例如20160101
?
由于您请求的日期是2016年1月1日,似乎要添加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
date_add
为您提供日期类型作为输出。 因为您已经使用过from_unixtime
和unix_timestamp
,所以我会假设您已经知道它们的功能。 在蜂巢/黑斑羚,还有像MySQL/MariaDB的没有本地DATE_FORMAT
功能,所以你必须给你的date_add
到unix_timestamp
的输出转换,然后使用from_unixtime
在输出达到预期的格式。
东西线沿线的:
select
from_unixtime(unix_timestamp(
date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd')), 365)),
'yyyyMMdd');
相同的格式,你可以添加一个解释你的代码的作用,以及一些换行符,所以它实际上是可读的吗? –
您已经提供了自己的答案!使用与输入日期'yyyyMMdd' –