You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark中特定格式字符串转指定日期格式返回NULL的解决方法

解决办法

Spark SQL 实现

直接在TO_DATE函数中指定输入日期的格式即可,你之前的写法因为未匹配原始字符串格式,导致解析失败返回NULL。执行以下SQL语句:

SELECT DATE_FORMAT(TO_DATE(your_column_name, 'dd-MMM-yy HH.mm.ss'), 'yyyyMMdd') AS formatted_date
FROM your_table;

其中'dd-MMM-yy HH.mm.ss'对应原始日期字符串的格式规则:

  • dd:两位数字表示的日期
  • MMM:三位英文月份缩写(如MAY)
  • yy:两位数字表示的年份
  • HH.mm.ss:时分秒,分隔符为.

PySpark 实现

通过to_date函数指定输入格式,再用date_format转换为目标格式:

from pyspark.sql.functions import to_date, date_format

# 假设原始列名为original_date,生成新列formatted_date
df = df.withColumn(
    "formatted_date",
    date_format(to_date("original_date", "dd-MMM-yy HH.mm.ss"), "yyyyMMdd")
)

原方法返回NULL的原因

Spark的TO_DATE函数若不指定输入格式,会使用默认的日期格式(通常为yyyy-MM-dd),而你的原始日期字符串格式06-MAY-16 09.17.15和默认格式不匹配,导致解析失败,最终返回NULL。

内容的提问来源于stack exchange,提问作者Carolina Karoullas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:25:23