Der Rückgabetyp from_unixtime()
ist nicht ein "richtiges timestamp
", sondern ein String. (Und der Rückgabetyp von unix_timestamp()
ist nicht ... ein timestamp
, aber ein bigint
). Hier
ist, was ich tun, um eine timestamp
Rückgabetyp zu erhalten:
select
cast(unix_timestamp(`date`, "yyyy-MM-dd;HH:mm:ss") as timestamp)
from t1
limit 100;
Aus Gründen der Vollständigkeit, hier ist, wie ich mit Zeitzonen umgehen, lokal formatiert Daten und speichert sie als UTC-Zeitstempel:
select
to_utc_timestamp(cast(unix_timestamp(`date`, "yyyy-MM-dd;HH:mm:ss") as timestamp), "Europe/Paris")
from t1
limit 100;
Dies setzt voraus, dass das Startflag -use_local_tz_for_unix_timestamp_conversions
deaktiviert ist (dies ist die Standardeinstellung).
Dies gibt "WARNINGS: Falsches Datum/Zeit-Konvertierungsformat: JJJJ-MM-TT; HH: MM: SS" zurück. Wenn Sie das Handbuch lesen, heißt es, dass Großschreibung wichtig ist. Hier ist es: http://www.cloudera.com/documentation/enterprise/latest/topics/impala_datetime_functions.html. Sie suchen nach dem Abschnitt from_unitime, um zu erklären, wie Sie das Format in unix_timestamp verwenden. – jbapple