Spark - Datediff好几个月?

时间:2016-08-10 07:26:34

标签: java apache-spark

有几个月使用datediff的好方法吗?为了澄清:datediff方法需要两列,并返回在两个日期之间传递的的数量。我想在中拥有它。我希望在我的函数中有一个参数,我可以告诉它检查数据,从过去的20,36,无论几个月。如果我只做了约会并将结果除以30(或31),那么结果就不太准确了。我可以使用30.4166667(= 365天/ 12个月),但这对于较短的时期来说都不太准确。那么,关于如何使用datediff以便能够获得数月的任何提示呢? SQL就像SELECT DATEDIFF(month, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');一样,我在Spark中寻找类似的东西。

2 个答案:

答案 0 :(得分:5)

您可以尝试months_between

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

答案 1 :(得分:0)

这对我有用:

from pyspark.sql.functions import months_between

data = sqlContext.sql('''
SELECT DISTINCT mystartdate,myenddate,
 CAST(months_between(mystartdate,myenddate) as int) as months_tenure
FROM mydatabase
''')