PySpark如何将无冒号时分秒的字符串列转换为datetime类型?
无分隔符时间字符串转Spark datetime的正确方法
你之前的报错核心是格式模式写错了,完全不需要给时间部分插冒号就能直接转换,只需要修正格式匹配符:
- 原代码里的
YYYYddmm是错误的:YYYY代表基于周的年份,和常规4位年份yyyy不同;ddmm是日在前、月在后,而你的日期字符串20221026是年-月-日的顺序,应该用yyyyMMdd - 时间部分的
HHmmss是对的,因为220032是24小时制的时-分-秒,不需要分隔符
修正后的代码:
import pyspark.sql.functions as F df_meta = df_meta.withColumn("filedatetime", F.to_timestamp(F.col("filedatetime_str"), "yyyyMMdd HHmmss"))
验证一下:字符串20221026 220032会被正确解析为2022-10-26 22:00:32的datetime类型。需要确保filedatetime_str列的所有字符串都严格遵循yyyyMMdd HHmmss格式,没有额外空格或字符,否则仍可能解析失败。
内容的提问来源于stack exchange,提问作者vin
相关产品推荐
相关产品推荐

