如何将pyspark dateframe中的日期时间列转换为mont的第一天

时间:2021-01-12 08:16:58

标签: apache-spark pyspark apache-spark-sql datetime-format pyspark-dataframes

我有一个 pyspark 数据框,其列的日期时间值的格式为“09/19/2020 09:27:18 AM” 我想以这种格式转换为 01-Nov-2020 的第一天。 我试过 "date_col", F.trunc("date_col", "month") 这导致 null 日期 和

df_result = df_result.withColumn('gl_date', F.udf(lambda d: datetime.datetime.strptime(d, '%MM/%dd/%yyyy %HH:%mm:%S a').strftime('%Y/%m/1'), t.StringType())(F.col('date_col')))

我尝试的第二种方法错误日期格式为'%MM/%dd/%yyyy %HH:%mm:%S a' is not matching with '09/19/2020 09:27:18 AM'

1 个答案:

答案 0 :(得分:1)

您可以在调用 trunc 之前将列转换为时间戳类型:

import pyspark.sql.functions as F

df_result2 = df_result.withColumn(
    'gl_date',
    F.date_format(
        F.trunc(
            F.to_timestamp("date_col", "MM/dd/yyyy hh:mm:ss a"),
            "month"
        ),
        "dd-MMM-yyyy"   
    )
)
相关问题