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

PySpark中yyyy-mmm-dd格式日期转换为20180112格式的实现方法

Spark DataFrame日期格式转换:从2018-Jan-12到20180112

刚好处理过类似的需求,这里给你Python和Scala两种常用Spark开发语言的实现方案,核心思路是先将字符串格式的日期解析为Spark标准日期类型,再格式化为你需要的yyyyMMdd格式字符串。

Python 实现示例

假设你的DataFrame名为df,待转换的日期列名为date_col:

from pyspark.sql import functions as F

# 新增格式化后的列,或者直接替换原列
df = df.withColumn(
    "formatted_date",
    F.date_format(F.to_date(F.col("date_col"), "yyyy-MMM-dd"), "yyyyMMdd")
)

代码说明:

  • F.to_date(F.col("date_col"), "yyyy-MMM-dd"):把字符串类型的日期解析成Spark的DateType,其中MMM对应英文月份缩写(比如Jan、Feb),这个格式符是基于Java的SimpleDateFormat规范的。
  • F.date_format(..., "yyyyMMdd"):将解析后的日期类型转成目标格式字符串,yyyy代表4位年份,MM是2位月份,dd是2位日期,连起来就是20180112这种无分隔符的格式。

Scala 实现示例

同样假设DataFrame名为df,日期列名为date_col:

import org.apache.spark.sql.functions.{col, date_format, to_date}

val df = df.withColumn(
    "formatted_date",
    date_format(to_date(col("date_col"), "yyyy-MMM-dd"), "yyyyMMdd")
)

注意事项:语言环境问题

如果你的Spark集群默认语言不是英文,解析月份缩写(比如Jan)可能会失败,这时候需要指定英文Locale:

  • Python版本修改:
F.to_date(F.col("date_col"), "yyyy-MMM-dd", "en_US")
  • Scala版本修改:
to_date(col("date_col"), "yyyy-MMM-dd", java.util.Locale.US)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:14:54