J'ai l'impression queunix_timestampetfrom_unixtimeLes fonctions de la ruche sont "inversées".
Lorsque j'essaie de convertir la chaîne d'horodatage en secondes dans Hive:
SELECT unix_timestamp('10-Jun-15 10.00.00.000000 AM', 'dd-MMM-yy hh.mm.ss.MS a');
Je reçois 1418176800.
Lorsque j'essaie de convertir 1418176800 en chaîne d'horodatage:
SELECT from_unixtime(1418176800, 'dd-MMM-yy hh.mm.ss.MS a');
Je reçois le 10 décembre 2014 à 14h00, ce qui n’est évidemment pas égal à l’original.
Quelqu'un peut-il expliquer ce qui se passe? Merci.
N'utilisez pas depuis unix_timestamp comme vous l'avez fait dans votre seconde requête. De plus, votre déclaration a une mise en forme qui donne le résultat, où DEC est utilisé à la place de 12. Voir dd-MMM-yy. Ne spécifiez pas un format et cela devrait fonctionner. Voir les exemples ci-dessous.
Vous avez cependant raison de dire que from_unixtime () et unix_timestamp () sont utilisés pour convertir en arrière une chaîne temporelle.
select unix_timesetamp('2015-04-09 03:04:26') from dual;
de résultats en "1428566666"
select from_unixtime(1428566666) from dual;
résultats dans "2015-04-09 03:04:26"