将 int YYYYMMDD 转换为日期 pyspark

Conver int YYYYMMDD to date pyspark

我正在尝试使用 Pyspark 将 INT 列转换为 Databricks 中的日期列。 该列如下所示:

Report_Date
20210102
20210102
20210106
20210103
20210104

我正在尝试使用 CAST 函数

df = df.withColumn("Report_Date", col("Report_Date").cast(DateType()))

但我收到以下错误:

Cannot resolve 'CAST(`Report_Date` AS DATE)' due to data type mismatch: cannot cast int to date;

你知道我怎样才能得到预期的输出吗?

先转换为字符串类型,然后使用 to_date:

import pyspark.sql.functions as F

df2 = df.withColumn(
    "Report_Date", 
    F.to_date(F.col("Report_Date").cast("string"), "yyyyMMdd")
)