我打算通過添加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' –