wake-up-neo.com

Wie berechnet man den Datumsunterschied in Hive?

Ich bin ein Neuling. Ich habe eine Mitarbeiter-Tabelle mit einer Spalte, die das Beitrittsdatum angibt, und ich möchte die Liste der Mitarbeiter abrufen, die in den letzten 3 Monaten beigetreten sind. Ich verstehe, dass wir das aktuelle Datum mit from_unixtime (unix_timestamp ()) abrufen können. Wie berechne ich das Datum? Gibt es eine integrierte DATEDIFF () - Funktion wie in MS SQL? bitte beraten

11
Holmes
datediff(to_date(String timestamp), to_date(String timestamp))
36
Kishore

Wenn Sie die Differenz in Sekunden benötigen (dh Sie vergleichen Datumsangaben mit Zeitstempeln und nicht ganze Tage), können Sie einfach zwei Datums- oder Zeitstempelzeichenfolgen im Format 'JJJJ-MM-TT HH: MM: SS' (oder Geben Sie das Datumsformat der Zeichenfolge explizit mit unix_timestamp () an und subtrahieren Sie sie voneinander, um die Differenz in Sekunden zu erhalten. (Und kann dann durch 60.0 teilen, um Minuten zu erhalten, oder durch 3600.0, um Stunden usw. zu erhalten.)

Beispiel: 

UNIX_TIMESTAMP('2017-12-05 10:01:30') - UNIX_TIMESTAMP('2017-12-05 10:00:00') AS time_diff -- This will return 90 (seconds). Unix_timestamp converts string dates into BIGINTs. 

Weitere Informationen darüber, was Sie mit unix_timestamp () tun können, einschließlich der Konvertierung von Zeichenfolgen mit unterschiedlicher Datumsformatierung: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

2
wardw123

ja datediff ist implementiert; siehe: https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+UDF

Übrigens fand ich das bei Google-Suche "Hive Datediff", es war das erste Ergebnis;)

1
maxymoo

Ich würde das zuerst versuchen

select * from employee where month(current_date)-3 = month(joining_date)
0
Sambit Tripathy