2017-08-26 5 views
0

Wie man datediff pro Stunde im Impala zu berechnen? Zum Beispiel wie untenHow to dateiff pro Stunde in Impala berechnen

Select datediff(hour,'2017-06-21T02:29:54.244720804Z', '2017-06-21T02:30:10.574379557Z'); 

Standard Impalas 'datediff' Funktion gibt nur diff für Tag ..

Update: Lösung dachte ich

select cast(abs((unix_timestamp('2017-08-01 01:00:00', 'yyyy-MM-dd HH:mm:ss') - unix_timestamp('2017-08-01 00:00:00', 'yyyy-MM-dd HH:mm:ss'))/3600) as int); 

Antwort

0

Sie können diese Abhilfe anwenden,

select datediff(time_a, time_b)*24 + hour(time_a) - hour(time_b); 
+0

ist das nicht richtig. Zum Beispiel "datediff ('2017-08-16t12: 00: 00.000000000z', '2017-08-17t10: 00: 00.000000000z') * 24 + Stunde ('2017-08-16t12: 00: 00.000000000z') - Stunde ('2017-08-17t10: 00: 00.000000000z') "=> -22, was korrekt ist. Aber wenn Austausch time_a und time_b: "datediff ('2017-08-16t12: 00: 00.000000000z', '2017-08-17t10: 00: 00.000000000z') * 24-Stunden ('2017-08-16t12: 00: 00.000000000z ') + Stunde (' 2017-08-17t10: 00: 00.000000000z ') "=> -26. es ist falsch – user1269298

+0

nicht wahr? ist nicht -22 korrekt? willst du time_b - time_a? Wende sie einfach beide um. 'wählen datediff ('2017-08-17t10: 00: 00.000000000z', '2017-08-16t12: 00: 00.000000000z') * 24-Stunden ('2017-08-16t12: 00: 00.000000000z') + Stunde ('2017-08-17t10: 00: 00.000000000z'); ' – Amos

+0

-22 ist korrekt; p, aber nach switch time_a und time_b ist das Ergebnis -26. Siehe meinen Kommentar oben – user1269298