java - Spark - Datediff 几个月?

标签 java apache-spark

有没有好的使用方法datediff几个月?澄清一下:datediff方法采用两列并返回两个日期之间经过的天数。我想在几个月内拥有它。我想在我的函数中有一个参数,我可以告诉它检查过去 20 年、36 年、任何月份的数据。如果我只是做 datediff 并将结果除以 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 中寻找类似的东西。

最佳答案

你可以试试 months_between :

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

关于java - Spark - Datediff 几个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866803/

相关文章:

java - 在 Java/Spring/JSP 中绘制图像

scala - 线程中的异常 "main"java.lang.NoSuchMethodError : scala. Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps

java - 如果系统日期比当前日期早一年,如何在 java 中获取今天的日期?

java - 为什么我们使用 @ForeignKey(name ="FK_COUNTRY") 注解?

hadoop - Spark shell 无法连接到 YARN

Mongodb-hadoop-connector 会创建很多分区,即使我向它添加查询

scala - Elastic Search中的文档删除需要花费时间

scala - 如何通过编号而不是名称选择数据框中的列

java - Android 操作快速查看 - 文件问题 - 尝试打开远程 pdf 文档

java - Activity 占用大量内存,如何减少?