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

如何在PySpark中无需UDF转换特定格式时间字符串为标准格式

PySpark无UDF实现时间格式转换

不需要编写UDF,用Spark自带的两个函数组合就能搞定,之前to_timestamp返回null是因为没指定匹配输入格式的模板,具体操作如下:

核心思路

  1. 先通过to_timestamp指定正确的输入格式,把原始字符串转成Timestamp类型(这一步解决null问题)
  2. 再用date_format把Timestamp类型转成你需要的yyyy-MM-dd HH:mm:ss格式字符串

代码示例

假设你的DataFrame里存原始时间的列叫raw_time,直接这么写:

from pyspark.sql import functions as F

df = df.withColumn(
    "standard_time",
    F.date_format(
        # 第一个参数是原始时间列,第二个是输入格式模板
        F.to_timestamp(F.col("raw_time"), "MM/dd/yy hh:mm"),
        # 目标输出格式
        "yyyy-MM-dd HH:mm:ss"
    )
)

效果验证

比如输入值5/1/21 1:30,处理后standard_time列会得到2021-05-01 01:30:00,完全符合要求。

注意事项

  • 格式模板要对应准:MM是月份(1-12),dd是日期,yy是两位年份,hh是12小时制的小时;如果你的输入是24小时制,要把hh换成HH
  • 原始字符串的格式必须和模板匹配,不然还是会解析失败返回null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:24:31