Konvertieren YYYYMMDD-String zu Datum in Impala
Ich bin mit SQL in Impala zu schreiben, diese Abfrage. Ich werde versuchen, zu konvertieren eines Datums-Strings, gespeichert im format JJJJMMTT in ein Datum-format für die Zwecke der Ausführung einer Abfrage wie diese:
SELECT datadate,
session_info
FROM database
WHERE datadate >= NOW() - INTERVAL 5 DAY
ORDER BY datadate DESC;
Da die >= NOW() - INTERVAL 5 DAY
code funktioniert nicht mit der YYYYMMDD-string, ich würde gerne einen Weg finden, zu konvertieren, die in ein Datum-format, das mit dieser Art der Abfrage. Mein Gedanke ist, dass es sollte in etwa so Aussehen (basierend auf ähnliche Fragen zu anderen SQL-Abfrage-Editoren), aber es funktioniert nicht in 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;
Weiss jemand wie dieser im Impala?
EDIT:
Fand ich endlich eine funktionierende Lösung für das problem. Keiner der versuche mithilfe von Konfigurationen von CAST
oder CONVERT
wäre in Impala, aber der folgenden Abfrage löst das problem und ist voll funktionsfähig, so dass das Datum der Mathematik durchgeführt werden, wenn eine Spalte enthält string-Werte:
SELECT datadate,
session_info
FROM database
WHERE datadate >= from_unixtime(unix_timestamp(now() - interval 5 days), 'yyyyMMdd')
GROUP BY datadate
ORDER BY datadate DESC;
- Blick auf
month(20141008)
undyear(20141008)
- die
MONTH()
undYEAR()
Funktionen arbeiten in Impala gespeicherten Daten, wie ein Datum oder einen Zeitstempel, aber es scheint nicht zu funktionieren für string-Daten. - schauen Sie in die Dokumentation cloudera.com/content/cloudera/en/documentation/cloudera-impala/...
- diese Funktionen scheinen nicht zu funktionieren für mich mit Datum gespeichert als JJJJMMTT-strings.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen Timestamp-Literale auf http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/latest/topics/impala_literals.html
Müssen Sie zum hinzufügen von Strichen zu Ihrem string so, Impala wird in der Lage sein, es zu konvertieren in ein Datum/timestamp. Sie können tun, dass mit so etwas wie:
die Sie stattdessen verwenden können von
datadate
in Ihrem Ausdruck.Nativen Weg: