2016-12-05 76 views
0

我打算通過添加366 days到它的日期鍵延伸在一個表中的某些記錄:蜂房日期轉換

to_date(date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd'), 'yyyy-MM-dd'), 366))作爲NEW_DATE

2016年1月1日

但是如何將這個值轉換回原始密鑰的格式,例如20160101

+0

您已經提供了自己的答案!使用與輸入日期'yyyyMMdd' –

回答

0

由於您請求的日期是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 
0

date_add爲您提供日期類型作爲輸出。 因爲您已經使用過from_unixtimeunix_timestamp,所以我會假設您已經知道它們的功能。 在蜂巢/黑斑羚,還有像MySQL/MariaDB的沒有本地DATE_FORMAT功能,所以你必須給你的date_addunix_timestamp的輸出轉換,然後使用from_unixtime在輸出達到預期的格式。

東西線沿線的:

select 
    from_unixtime(unix_timestamp(
    date_add(from_unixtime(unix_timestamp('20150101' ,'yyyyMMdd')), 365)), 
    'yyyyMMdd'); 
+0

相同的格式,你可以添加一個解釋你的代碼的作用,以及一些換行符,所以它實際上是可讀的嗎? –