Spark:将带有日期和时间的 timeStamp 转换为 DateType

问题描述 投票:0回答:1

给定日期时间值:

2021-02-12T16:21:22

我尝试将其转换为 DateType,如下所示:

    to_date(to_timestamp(col("Date"), "yyyy-MM-dd'T'HH:mm:ss"), "yyyy-MM-dd")
                .cast(DateType)

但是该函数在其原始视图中返回带有日期和时间的值:

 2022-02-01T16:21:22

而不是预期:

 2022-02-01

更重要的是, printSchema() 告诉我,该类型没有改变:

   |-- Date: string (nullable = true)

我做错了什么?

apache-spark timestamp datetime-format
1个回答
0
投票

一旦使用了 to_date,就无需进行投射

这应该有效:

.withColumn("asDate", to_date(to_timestamp(col("Date"), "yyyy-MM-dd'T'HH:mm:ss"), "yyyy-MM-dd"))

输入:

+-------------------+
|               Date|
+-------------------+
|2021-02-12T16:21:22|
+-------------------+

输出:

+-------------------+----------+
|               Date|    asDate|
+-------------------+----------+
|2021-02-12T16:21:22|2021-02-12|
+-------------------+----------+

root
 |-- Date: string (nullable = true)
 |-- asDate: date (nullable = true)
© www.soinside.com 2019 - 2024. All rights reserved.