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
datediff(to_date(String timestamp), to_date(String timestamp))
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
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;)
Ich würde das zuerst versuchen
select * from employee where month(current_date)-3 = month(joining_date)