2017-10-10 16 views
1
Select * from concat(YEAR(DATE_SUB(MAX(Column_name),60),MONTH(DATE_SUB(MAX(Column_name),60),-01) 

Les rendements month() ne seul chiffres pendant des mois jusqu'à Septembre i.e. Jan retourne 1 au lieu de 01. Besoin d'aide pour gérer cela.Mois MM Mois en utilisant() Ruches

J'utilise cette sortie pour alimenter une autre requête SELECT en utilisant TO_DATE.

Répondre

0

month() La fonction renvoie un entier, c'est pourquoi il n'y a pas de zéro. Vous pouvez utiliser la fonction lpad(month,2,0) au format mois:

hive> select lpad(month('2017-09-01'),2,0); 
OK 
09 
Time taken: 0.124 seconds, Fetched: 1 row(s) 
hive> select lpad(month('2017-10-01'),2,0); 
OK 
10 
Time taken: 0.433 seconds, Fetched: 1 row(s) 

Vous pouvez également utiliser substr() pour extraire année et le mois de la date:

hive> select substr('2017-10-01',1,4) as year, substr('2017-10-01',6,2) as month; 
OK 
year month 
2017 10 

fonction DATE_SUB() avant Hive 2.1.0 (HIVE- 13248) return type était une chaîne car aucun type de date n'existait lors de la création de la méthode. Voir ici: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF