web-dev-qa-db-fra.com

Comment changer le format de date dans la ruche?

Ma table dans Hive a un fichier de date au format '2016/06/01'. mais je trouve que ce n'est pas inoffensif avec le format de '2016-06-01'. Ils ne peuvent pas comparer par exemple. Les deux sont des chaînes. Je veux donc savoir comment les rendre inoffensifs et pouvoir les comparer. Ou d'autre part, comment changer le '2016/06/01' en '2016-06-01' afin qu'ils puissent se comparer.

Merci beaucoup.

9
yanachen

Pour convertir une chaîne de date d'un format à un autre, vous devez utiliser la fonction à deux dates de Hive

  1. unix_timestamp(string date, string pattern) convertit la chaîne de temps avec le modèle donné en horodatage unix (en secondes), retourne 0 en cas d'échec.
  2. from_unixtime(bigint unixtime[, string format]) convertit le nombre de secondes de Unix Epoch (1970-01-01 00:00:00 UTC) en une chaîne représentant l'horodatage de ce moment dans le fuseau horaire actuel du système.

En utilisant les deux fonctions ci-dessus, vous pouvez obtenir le résultat souhaité.

L'échantillon d'entrée et de sortie peut être vu de l'image ci-dessous: enter image description here

La dernière requête est

select from_unixtime(unix_timestamp('2016/06/01','yyyy/MM/dd'),'yyyy-MM-dd') from table1; 

où table1 est le nom de la table présente dans ma base de données Hive.

J'espère que cela vous aidera !!!

20
Farooque

Utilisation :

unix_timestamp(DATE_COLUMN, string pattern)

La commande ci-dessus aiderait à convertir la date au format d'horodatage Unix que vous pouvez formater comme vous le souhaitez à l'aide de Simple Date Function .

Fonction date

2
Ani Menon
cast(to_date(from_unixtime(unix_timestamp(yourdate , 'MM-dd-yyyy'))) as date)
0
Ashah

Supposons que vous ayez une colonne 'birth_day' dans votre table qui est dans votre format, vous devez utiliser la requête suivante pour convertir birth_day dans le format requis.

date_Format(birth_day, 'yyyy-MM-dd')

Vous pouvez l'utiliser dans une requête de la manière suivante

select * from yourtable
where 
date_Format(birth_day, 'yyyy-MM-dd') = '2019-04-16';
0
Terminator17