Convertir AAAAMMJJ Chaîne de Date dans l'Impala

Je suis à l'aide de SQL dans l'Impala pour écrire cette requête. Je suis en train de convertir une date en chaîne de caractères, stockées au format AAAAMMJJ, dans un format de date pour les fins de l'exécution d'une requête comme ceci:

SELECT datadate, 
       session_info
FROM database
WHERE datadate >= NOW() - INTERVAL 5 DAY
ORDER BY datadate DESC;

Depuis le >= NOW() - INTERVAL 5 DAY code ne fonctionnera pas avec le format AAAAMMJJ de la chaîne, j'aimerais trouver un moyen de les convertir dans un format de date qui va travailler avec ce type de requête. Ma pensée est qu'il devrait ressembler à quelque chose comme ceci (basé sur des questions similaires sur d'autres requêtes SQL éditeurs), mais cela ne fonctionne pas dans l'Impala:

SELECT datadate,
       session_info,
       convert(datetime, '20141008', 102) AS session_date
FROM database
WHERE session_date >= NOW() - INTERVAL 5 DAY
ORDER BY session_date DESC;

Quelqu'un sait comment faire cela dans l'Impala?

EDIT:

J'ai enfin trouvé une solution au problème. Aucune de ces tentatives à l'aide de configurations de CAST ou CONVERT serait de travailler dans l'Impala, mais la requête ci-dessous permet de résoudre le problème et est pleinement opérationnel, permettant à la date de mathématiques à être effectuée sur une colonne contenant les valeurs de chaîne:

SELECT datadate,
       session_info
FROM database
WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days), 'yyyyMMdd')
GROUP BY datadate
ORDER BY datadate DESC;
regardez month(20141008) et year(20141008)
le MONTH() et YEAR() fonctions de travail dans l'Impala données stockées sous forme de date ou timestamp, mais il n'apparaît pas de travailler pour la chaîne de données.
regardez la documentation de cloudera.com/content/cloudera/en/documentation/cloudera-impala/...
ces fonctions ne semblent pas fonctionner pour moi avec les dates stockées en tant que AAAAMMJJ cordes.

OriginalL'auteur nxl4 | 2015-10-08