有几个月使用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中寻找类似的东西。
答案 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
''')