首页 > 解决方案 > 如何从scala数据框中的日期列值中检索月份?

问题描述

鉴于:

val df = Seq((1L, "04-04-2015")).toDF("id", "date")
val df2 = df.withColumn("month", from_unixtime(unix_timestamp($"date", "dd/MM/yy"), "MMMMM"))
df2.show()

我得到了这个输出:

+---+----------+-----+
| id|      date|month|
+---+----------+-----+
|  1|04-04-2015| null|
+---+----------+-----+

但是,我希望输出如下:

+---+----------+-----+
| id|      date|month|
+---+----------+-----+
|  1|04-04-2015|April|
+---+----------+-----+

如何使用 Scala 在 sparkSQL 中做到这一点?

标签: scalaapache-sparkdataframeapache-spark-sql

解决方案


这应该这样做:

val df2 = df.withColumn("month", date_format(to_date($"date", "dd-MM-yyyy"), "MMMM"))

df2.show
+---+----------+-----+
| id|      date|month|
+---+----------+-----+
|  1|04-04-2015|April|
+---+----------+-----+

笔记:

  • 第一个字符串 (to_date) 必须与您现有日期的格式匹配
    • 小心:“dd-MM-yyyy”与“MM-dd-yyyy”
  • 第二个字符串(date_format)是输出的格式

文件:


推荐阅读