如何将日期时间列转换为一个月的第一天?
How to convert a datetime column to firstday of month?
我有一个 PySpark 数据框,其列的日期时间值格式为 '09/19/2020 09:27:18 AM'
我想以这种格式转换为 2020 年 11 月 1 日的第一天。
我试过 "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' 与 '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"
)
)
我有一个 PySpark 数据框,其列的日期时间值格式为 '09/19/2020 09:27:18 AM'
我想以这种格式转换为 2020 年 11 月 1 日的第一天。
我试过 "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' 与 '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"
)
)