如何将数据框中的多个“字符串”列转换为日期时间列?

时间:2019-04-20 22:19:29

标签: apache-spark pyspark apache-spark-sql

我正在将多个字符串列转换为日期时间列,但是遇到以下问题:

示例列1:

pipline_rw

代码:

1/11/2018 9:00:00 AM

这行得通

示例列2:

df = df.withColumn(df.column_name, to_timestamp(df.column_name, "MM/dd/yyyy hh:mm:ss aa"))

代码:

2019-01-10T00:00:00-05:00

这行得通

第3列示例

df = df.withColumn(df.column_name, to_date(df.column_name, "yyyy-MM-dd'T'HH:mm:ss'-05:00'"))

代码:

20190112

这不起作用。我收到此错误:

df = df.withColumn(df.column_name, to_date(df.column_name, "yyyyMMdd"))

我觉得这应该很简单,但是我缺少了一些东西。

1 个答案:

答案 0 :(得分:1)

该错误很容易解释,您需要将列设为String。 您确定列已是字符串吗?好像没有您可以先使用column.cast

将其转换为String。
import org.apache.spark.sql.types._
df = df.withColumn(df.column_name, to_date(df.column_name.cast(StringType), "yyyyMMdd")