Comment convertir une chaîne d'horodatage avec millisecondes dans la Ruche
J'ai un string '20141014123456789" qui représente un horodatage avec millisecondes que j'ai besoin de convertir un timestamp dans la Ruche (0.13.0) sans perdre les millisecondes.
J'ai essayé ceci mais unix_timestamp renvoie un entier, donc, je perds le millisecondes:
from_unixtime(unix_timestamp('20141014123456789', 'yyyyMMddHHmmssSSS')) >> 2014-10-14 12:34:56
La conversion d'une chaîne de travaux:
cast('2014-10-14 12:34:56.789' as timestamp) >> 2014-10-14 12:34:56.789
mais ma chaîne n'est pas sous cette forme.
Je pense que je dois reformater mon chaîne de '20141014123456789' à '2014-10-14 12:34:56.789'. Mon défi est de savoir comment le faire sans un désordre de concaténation de chaînes.
InformationsquelleAutor David Ford | 2014-10-14
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé un moyen d'éviter le désordre de concaténation de chaînes en utilisant le code suivant:
j'ai eu le champ de date dans cette forme 2015-07-22T09:00:32.956443 Z(stockées sous forme de chaîne). j'ai besoin de faire quelques date de manipulations.
la commande suivante, même si peu salissant a bien fonctionné pour moi:)
cela semble confus, mais il est assez facile si vous le briser.
l'extraction de la date et le temps en millisecondes et concat un espace entre les deux, et alors concat la chose entière et moulage en timestamp. maintenant, cela peut être utilisé pour la date ou timestamp manipulations.
Je ne pense pas que cela peut être fait sans le désordre. Parce que, selon la unix_timestamp() fonction de la documentation, il retourne le temps en secondes et qu'en conséquence, vous omettez le millisecondes partie.
"Convertir en chaîne de temps avec motif donné pour Unix time stamp (en secondes), retourne 0 si échec: unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400."
Meilleur choix ici serait d'écrire une fonction pour gérer ce que vous voulez éviter le désordre concaténations. Cependant la concaténation (si salissant) serait mieux à l'emploi.
Disons que vous avez une colonne 'birth_date' dans ta table qui est dans un format de chaîne,
vous devez utiliser la requête suivante pour filtre à l'aide de birth_date
Vous pouvez l'utiliser dans une requête de la manière suivante
Une stratégie simple serait d'utiliser
date_format(arg1, arg2)
, oùarg1
est le timestamp soit sous forme de chaîne de caractères, date, ou l'horodatage et l'arg2
est le format de la chaîne (enarg1
). Reportez-vous à laSimpleDateFormat
de documentation de java pour ce qui est acceptable dans l'argument de format.Donc, dans ce cas:
donnerait la chaîne suivante:
'2014-10-14 12:34:56.789'
qui peut ensuite être jeté comme timestamp:La déclaration ci-dessus serait de retour timestamp (comme souhaité).