如何在scala Dataframe 中从日期列值中检索月份?

zte4gxcn  于 2022-11-23  发布在  Scala
关注(0)|答案(3)|浏览(123)

给定:

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|
+---+----------+-----+

如何在sparkSQL中使用Scala实现这一点?

fcipmucu

fcipmucu1#

这应该可以做到:

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)必须与现有日期的格式匹配
  • 请注意:“年-月-日”与“年-月-日”
  • 第二个字符串(date_format)是输出的格式

文件:

  • 到日期(_D)
  • 日期格式
uajslkp6

uajslkp62#

在你的代码中没有什么错误,只是保持你的日期格式作为你的日期列。在这里,我附上你的代码和更改代码的截图。

"快乐的哈度“

o8x7eapl

o8x7eapl3#

与此问题不完全相关,但如果要将月份作为整数,则有一个month函数:

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

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

同样,您可以使用year函数只获取年份。

相关问题