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

Pyspark转换带时间戳的yyyy/mm/dd格式字符串日期出现null如何解决

问题原因
  • 你使用to_date()函数时未指定与输入字符串匹配的格式规则,PySpark默认无法识别yyyy/MM/dd HH:mm:ss+00格式的字符串,因此返回全量null值。
解决方案

方法1:直接指定转换格式(推荐)

在to_date()的第二个参数传入与输入内容匹配的格式串即可完成转换,转换结果为Date类型,默认展示格式为yyyy-MM-dd,满足后续日期过滤需求:

from pyspark.sql.functions import to_date, col

# 若时间后缀固定为+00,用以下固定格式
df = df_pyspark.withColumn("date_only", to_date(col("DateTime"), "yyyy/MM/dd HH:mm:ss+00"))

# 若后缀为动态时区偏移,用通用时区匹配格式
df = df_pyspark.withColumn("date_only", to_date(col("DateTime"), "yyyy/MM/dd HH:mm:ssXXX"))

注意:格式串中月份需使用大写MM,分钟使用小写mm,大小写匹配错误也会导致转换返回null

方法2:输出字符串类型的日期

如果你需要date_only列为字符串类型而非Date类型,可以嵌套date_format()函数实现:

from pyspark.sql.functions import to_date, col, date_format

df = df_pyspark.withColumn(
    "date_only_str",
    date_format(to_date(col("DateTime"), "yyyy/MM/dd HH:mm:ssXXX"), "yyyy-MM-dd")
)
验证转换结果

执行以下代码查看转换是否符合预期:

df.select("DateTime", "date_only").show(5, truncate=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:57:04