问题描述
我有一个 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'>
解决方法
您可以在调用 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"
)
)