scala - 如何获取开始日期和结束日期之间的月数

标签 scala apache-spark

我想获取两个日期之间的月数,我正在从 csv 文件读取开始日期和结束日期。

id          startDate  endDate
100         5/1/2016   5/1/2017
200         5/2/2016   5/1/2017
300         5/2/2016   5/1/2017

我的输出应该如下所示:

id          startDate  endDate     res
100         5/1/2016   5/1/2017    12
200         5/2/2016   5/1/2017    11
300         5/3/2016   5/1/2017    10

请让我知道我的代码有什么问题

val data = spark.read.option("header", "true").csv("sample.csv");
val result = data.withColumn("res", withColumn("Months", ChronoUnit.MONTHS.between(startDate ,endDate)).show()

最佳答案

  1. 将列转换为日期数据类型。
  2. 您可以使用 SQL datediff 函数。

语法:

val dt = sqlcontext.sql("SELECT DATEDIFF(month, start_date, end_date) AS DateDiff from relation")

您可以引用以下链接获取 datediff:Datediff

这是一个类似的问题:stackoverflow

关于scala - 如何获取开始日期和结束日期之间的月数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48376131/

相关文章:

scala - Apache Spark - 是否可以使用依赖注入(inject)机制

scala - 有限状态机和 FSM 间信令

scala - 在 Scala 数据框中合并 map

scala - 使用枚举作为类型参数

java - Spark - 将 scala 转换为 java

python - Pyspark sc.textFile() 没有完全加载文件

scala - 如何在 apache Spark 中展平数据框 |斯卡拉

apache-spark - 在 yarn 杀死执行程序后,Spark 不断重新启动执行程序

python - spark 谓词下推是否适用于 JDBC?

scala - 如何将 "instantiate"抽象类放在父类(super class)中?