Convertit une chaîne de timestamp dans la Ruche
J'ai la chaîne suivante représentation d'un timestamp dans ma table de la Ruche:
20130502081559999
J'ai besoin de convertir une chaîne de caractères comme suit:
2013-05-02 08:15:59
J'ai essayé de suivre ({code} >>> {résultat}):
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmss')) >>> 2013-05-03 00:54:59
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssMS')) >>> 2013-09-02 08:15:59
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssMS')) >>> 2013-05-02 08:10:39
Convertir un timestamp et puis unixtime semble bizarre, quelle est la bonne façon de le faire?
MODIFIER
J'ai pensé à elle.
from_unixtime(unix_timestamp(substr('20130502081559999',1,14), 'yyyyMMddHHmmss')) >>> 2013-05-02 08:15:59
ou
from_unixtime(unix_timestamp('20130502081559999', 'yyyyMMddHHmmssSSS')) >>> 2013-05-02 08:15:59
Encore... Est-il un meilleur moyen?
Vous devez vous connecter pour publier un commentaire.
Pas sûr de ce que tu veux dire par "mieux", mais vous pouvez toujours écrire votre propre fonction pour gérer la date de conversion.
Ressemble votre format a trois milliseconde chiffres. Je suppose que, selon la SimpleDateFormat, vous devez utiliser la syntaxe suivante:
Espère que ça aide.
Supposons que vous avez un fichier d'entrée comme ceci
file:///données/csv/temptable/temp.csv
Alors vous pouvez aussi essayer cette approche:
Si disponible, vous pouvez simplement utiliser la syntaxe suivante
1) vérifier si ce que l'Udf sont disponibles dans votre ruche installer?
2) si vu from_unixtime() fonction:
Cela va résoudre le problème!
Veuillez ajouter des commentaires, si vous aimez ma réponse!