将日期从整数转换为日期格式

Raj*_*Raj 4 python pyspark aws-glue

我有一列“start_date”,它是一个整数 37823。这发生在我使用 xlrd 库将 xlsx 转换为 csv 时。因此,'2003/07/21' 被转换为 37823。

我已经阅读了 xlrd 文档,我知道有几种方法可以将其转换为最新版本。但是,我需要在 AWS Glue ETL 作业中使用 PySpark 将其转换为日期格式。有什么建议?

我尝试使用 to_date、date_format 函数,但没有任何效果。

Raj*_*Raj 6

我终于能够解决这个问题。

使用 UDF:

def convert_date(x):
    mDt = datetime.datetime(1899, 12, 30)
    dlt = mDt + datetime.timedelta(days=x)
    return dlt.strftime("%Y-%m-%d")

convert_date_udf = udf(lambda z: convert_date(z), StringType())
df = df.withColumn('hire date', convert_date_udf('hire date').alias('hire date new'))
Run Code Online (Sandbox Code Playgroud)

不使用 UDF:

df = df.withColumn('hire date', F.expr("date_add(to_date('1899-12-30'), cast(`hire date` as int))").cast(StringType())
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!