2015-09-09 8 views
6

Come posso lanciare una stringa nel formato 'gg-MM-aaaa' a un tipo di data anche nel formato 'gg-MM-aaaa' in Hive?String cast di hive alla data gg-MM-aaaa

Qualcosa sulla falsariga di:

CAST('12-03-2010' as date 'dd-mm-yyyy') 
+1

Non esiste un "tipo di data con formato specifico". Digitare DATE è memorizzato come binario e visualizzato per impostazione predefinita in formato ISO; se si desidera visualizzarlo in un altro formato, è necessario formattarlo in modo esplicito, caso per caso. –

risposta

11

prova:

from_unixtime(unix_timestamp('12-03-2010' , 'dd-MM-yyyy')) 
+11

Questo è ancora un * Stringa *, con il formato * TimeStamp *. Per lanciarlo in un * Date * devi racchiuderlo in 'cast (to_date (from_unixtime (unix_timestamp (STR_DMY, 'dd-MM-yyyy'))) come data)' –

+0

E sì, vorrei che ci fosse un modo migliore per manipolare le date in Hive: - / –

1

per quanto ne so è necessario riformattare il String in formato ISO per essere in grado di lanciare come Data:

cast(concat(substr(STR_DMY,7,4), '-', 
      substr(STR_DMY,1,2), '-', 
      substr(STR_DMY,4,2) 
      ) 
    as date 
    ) as DT 

Per disp porre una data come String con formato specifico, allora è il contrario, a meno che non si dispone di Hive 1.2+ e può utilizzare date_format()

=> hai fatto check the documentation a proposito?