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

Spark DataFrame中字符串转日期类型的实现问题

解决Spark DataFrame字符串转Date类型的问题

我来帮你搞定这个日期转换的难题!你现在需要把DataFrame里格式为yyyyMMdd的字符串字段,转换成标准的yyyy-MM-dd格式的Date类型,之前用unix_timestamp没得到预期结果,是因为这个函数返回的是长整型时间戳,不是Date类型,咱们换个正确的方式就行。

方法一:直接用to_date()(推荐,Spark 2.2+适用)

Spark 2.2及以上版本提供了to_date()函数,可以直接将指定格式的字符串转换成Date类型,这是最简洁的方式:

from pyspark.sql.functions import col, to_date

# 转换并创建新DataFrame
df2 = df1.select(
    col("Field1").alias("f1"),
    to_date(col("Field2"), "yyyyMMdd").alias("f2")
)

# 查看结果和Schema
df2.show()
df2.printSchema()

执行后你会看到:

  • show()输出里f2的值是2018-01-01
  • printSchema()里f2的类型是date,完全符合你的需求。

方法二:兼容旧版本Spark(低于2.2)

如果你的Spark版本比较旧,不支持to_date()的格式参数,可以先通过unix_timestamp转成时间戳,再用from_unixtimestamp转成Timestamp,最后强转成Date类型:

from pyspark.sql.functions import col, unix_timestamp, from_unixtimestamp

df2 = df1.select(
    col("Field1").alias("f1"),
    from_unixtimestamp(unix_timestamp(col("Field2"), "yyyyMMdd")).cast("date").alias("f2")
)

这个流程是:字符串 → 时间戳 → Timestamp类型 → Date类型,最终也能得到你想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:33:02