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

Spark 2.4下PySpark/SparkSQL优雅转换ISO日期字符串为Timestamp

在Spark 2.4中优雅转换ISO 8601日期字符串为Timestamp

不需要依赖正则替换,Spark 2.4的to_timestamp函数支持直接匹配你这种带Z的标准ISO 8601格式,直接指定对应格式字符串即可,逻辑更直观、可读性更强。

方法1:SparkSQL写法

直接在to_timestamp中指定包含固定字符T和Z的格式模板:

SELECT TO_TIMESTAMP('2022-04-12T14:22:34Z', 'yyyy-MM-dd''T''HH:mm:ss''Z''') AS result

格式字符串里的'T'和'Z'用单引号包裹,表示匹配原字符串中的字面量,避免被解析为日期格式符。

方法2:PySpark API写法

如果使用DataFrame API,写法更简洁:

from pyspark.sql.functions import to_timestamp

# 假设你的DataFrame有一列名为date_str,存储目标日期字符串
df = df.withColumn("timestamp_col", to_timestamp(df.date_str, "yyyy-MM-dd'T'HH:mm:ss'Z'"))

额外优化

如果你的日期字符串都是UTC时区的标准格式,还可以用X作为UTC标识的匹配符,格式字符串更简洁:

SELECT TO_TIMESTAMP('2022-04-12T14:22:34Z', 'yyyy-MM-dd''T''HH:mm:ssX') AS result

这种方式完全规避了正则替换的必要性,逻辑清晰,也避免了正则可能带来的潜在问题(比如字符串中意外出现其他T/Z字符时的错误匹配)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:15:34