spark scala日期转换

4xrmg8kj  于 2023-04-06  发布在  Scala
关注(0)|答案(2)|浏览(161)

我有日期格式为DDMONYYYY的dataFrame,需要将其转换为格式为YYYY-MM-DD的日期格式
谁能帮我解决这个问题

val df = spark.sqlContext.createDataFrame(Seq(
      ("steak", "1990-01-01", "30Mar2022", 150),
      ("steak", "2000-01-02", "13Jan2021", 180),
      ("fish",  "1990-01-01", "01Feb2001", 100)
    )).toDF("name", "startDate", "endDate", "price")

df.show()

df.select(date_format(col("endDate"), "MM/dd/yyyy")).show
xriantvc

xriantvc1#

您可以使用Spark提供的to_datedate_format函数。

val df2 = df.withColumn("endDate", to_date(col("endDate"), "ddMMMyyyy"))
  .withColumn("endDate", date_format(col("endDate"), "yyyy-MM-dd"))

df2.show()

第一个withColumn使用**“ddMMMyyyy”模式将 “endDate” 列转换为日期类型。第二个withColumn使用“yyyy-MM-dd”**模式将日期转换为字符串。

+-----+----------+----------+-----+
| name| startDate|   endDate|price|
+-----+----------+----------+-----+
|steak|1990-01-01|2022-03-30|  150|
|steak|2000-01-02|2021-01-13|  180|
| fish|1990-01-01|2001-02-01|  100|
+-----+----------+----------+-----+
apeeds0o

apeeds0o2#

下面的步骤也做得很好。
瓦尔df2 = df.withColumn(“endDate”,expr(“date_format(to_date(endDate,'ddMMMMyyy'),'yyyy-MM-dd')“)“))

相关问题