2016-08-10 5 views
2

Gibt es eine gute Möglichkeit, datediff mit Monaten zu verwenden? Zur Verdeutlichung: Die Methode datediff benötigt zwei Spalten und gibt die Anzahl der Tage zurück, die zwischen den beiden Daten vergangen sind. Ich möchte das in Monaten haben. Ich möchte einen Parameter in meiner Funktion haben, den ich sagen kann, um Daten aus den letzten 20, 36, welchen Monaten auch immer zu überprüfen. Wenn ich nur das Ergebnis dividiere und das Ergebnis mit 30 (oder 31) teile, dann ist das Ergebnis nicht ganz genau. Ich könnte 30.4166667 (= 365 Tage/12 Monate) verwenden, aber das ist auch für kürzere Zeiträume nicht ganz genau. Also, irgendwelche Tipps, wie man datediff verwendet, um Monate daraus zu bekommen? SQL hat es wie SELECT DATEDIFF(month, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');, ich suche etwas in Spark.Spark - Datediff für Monate?

Antwort

2

Sie können months_between versuchen:

import org.apache.spark.sql.functions.* 
DataFrame newDF = df.withColumn("monthDiff", months_between(col("col1"), col("col2"))