web-dev-qa-db-fra.com

Les fonctions unix_timestamp et from_unixtime de Hive

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.

6
menorah84

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"

2
invoketheshell