PySpark中字符串日期转日期类型报错,寻求解决方案
解决PySpark日期字符串转日期类型的解析错误
你的代码报错是因为指定的格式字符串与实际日期格式不匹配,具体问题有两点:
- 原日期字符串中的日期是1位数字(如
7),但你用了要求两位数字的dd格式符; - 原字符串包含
12:00AM的时间部分,格式字符串里未对应处理,导致解析到该部分时失败。
正确的转换代码
直接使用匹配完整格式的字符串即可完成转换,有两种写法:
方法1:先转时间戳再转日期
import pyspark.sql.functions as F df = df.withColumn("date", F.to_date(F.to_timestamp(df.date, 'MMM d yyyy hh:mma')))
方法2:直接用to_date指定完整格式
import pyspark.sql.functions as F df = df.withColumn("date", F.to_date(df.date, 'MMM d yyyy hh:mma'))
格式符说明
MMM:匹配英文月份缩写(如Apr)d:匹配1-2位的日期(兼容7和17)yyyy:匹配4位年份hh:匹配12小时制的小时数mm:匹配分钟数a:匹配AM/PM标识
执行后,日期列会被正确转换为2022-04-07、2022-04-17这样的日期类型。
内容的提问来源于stack exchange,提问作者sm925
相关产品推荐
相关产品推荐

