2017-11-24 3 views
1

hive Version 2.1.0Warum unter zwei Bienenstock sql mit unterschiedlichen Ergebnissen?

hql 1:

hive> select day, datediff(day, '2017-01-01') from mall_stat_daily where day='2017-11-13'; 

result: 
2017-11-13  315 

hql2:

hive> select day, datediff('2017-11-13', '2017-01-01') from mall_stat_daily where day='2017-11-13'; 

result: 
2017-11-13  316 

warum diese mit anderen Ergebnis? Ich teste diese sqls auch in mysql und bekomme das gleiche Ergebnis '316'.

Antwort

3

Dies war ein Fehler in 2.0.0, da der Datumsformatierer die UTC-Zeitzone verwendet, wenn Daten aus der Zeichenfolge analysiert werden. Dies würde korrekt funktionieren, wenn beide Parameter vom Typ string sind, aber wenn einer der Parameter vom Typ string und der andere Typ vom Typ date/timestamp ist, liefert er falsche Ergebnisse, da der Datums-/Zeitstempelwert basierend auf dem Datum für das Millisekunden-Ergebnis hat lokale Zeitzone Dies wurde in Version 2.3 behoben. https://issues.apache.org/jira/browse/HIVE-15338

Hoffe das hilft.

+0

Danke. Ich werde versuchen, eine Lösung für dieses Problem zu finden. –

Verwandte Themen