首页 > 解决方案 > 将日期从整数转换为日期格式

问题描述

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

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

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

标签: pythonpysparkaws-glue

解决方案


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

使用 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'))

不使用 UDF:

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

希望能帮助到你!


推荐阅读