Date de Conversion de Format dans la Ruche
Je suis très nouveau pour sql/ruche. Au début, j'ai chargé un fichier txt dans la ruche à l'aide de:
drop table if exists Tran_data;
create table Tran_data(tran_time string,
resort string, settled double)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
Load data local inpath 'C:\Users\me\Documents\transaction_data.txt' into table Tran_Data;
La variable tran_time
dans le fichier txt est comme ceci:10-APR-2014 15:01. Après le chargement de ce Tran_data table, j'ai essayé de convertir tran_time
à un format "standard" pour que je puisse adhérer à cette table vers une autre table à l'aide de tran_time
comme le join
clé. Le format de date souhaité est "aaaammjj". J'ai cherché des ressources en ligne, et trouvé ceci: unix_timestamp(substr(tran_time,1,11),'dd-MMM-yyyy')
Donc, essentiellement, je suis en train de faire ceci: unix_timestamp('10-APR-2014','dd-MMM-yyyy')
. Toutefois, la sortie est "NULL".
Donc ma question est: comment convertir le format de la date pour un format "standard", puis le convertir en format 'aaaammjj'?
OriginalL'auteur Yuning Zhang | 2014-08-07
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur jimbo
Ma Ruche Version: Ruche 0.12.0-cdh5.1.5
Je les ai converti en type datetime dans la première colonne de date dans la deuxième colonne à l'aide de la ci-dessous de la ruche les fonctions de date. Espérons que cette aide!
OriginalL'auteur manojd7sto
format d'entrée: jjmmaaaa
01032018
de sortie après la requête: aaaammjj
20180103
OriginalL'auteur ankitbaldua
Pour aider quelqu'un dans le futur:
La fonction suivante devrait fonctionner comme cela a fonctionné dans mon cas
OriginalL'auteur rohithnama
unix_timestamp fonction de convertir une chaîne de format de date pour le timestamp unix, en quelques secondes , mais pas à ce format jj-mm-aaaa.
Vous devez écrire votre propre personnalisé udf de convertir une chaîne de caractères date au format que vous avez besoin, comme le présent de la Ruche n'ont pas toutes les fonctions prédéfinies. Nous avons to_date fonction pour convertir un timestamp à ce jour , reste tout unix_timestamp fonctions ne va pas aider votre problème.
OriginalL'auteur Bharat Gamini
unix_timestamp('2014-05-01','dd-mmm-aaaa) vont travailler, votre chaîne d'entrée doit être dans ce format pour la ruche aaaa-mm-jj ou aaaa-mm-jj hh:mm:ss
Où que vous êtes en train d'essayer avec '01-MAI-2014' hive de ne pas la comprendre comme une chaîne de date
OriginalL'auteur Bharat Gamini