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

如何在Spark(Databricks)中将葡语格式字符串转为日期时间?

解决葡语时间字符串转Spark Timestamp的问题

问题原因

转换失败有两个核心原因:

  1. 原字符串包含葡语连接词de,不属于日期格式组成部分,你用的格式串d MMM yyyy hh:mm:ss无法匹配带de的字符串。
  2. Spark默认locale不识别葡语月份缩写(比如jan对应葡语janeiro),必须指定葡萄牙语(巴西)的locale才能解析。

解决方案

分两步处理:先清理字符串中的冗余内容,再指定locale解析时间。

1. 导入依赖

from pyspark.sql import functions as f

2. 清理时间字符串

用正则替换移除字符串中的de(注意前后空格,避免误删其他内容):

df = df.withColumn("clean_date", f.regexp_replace(f.col("date_column"), r" de ", " "))

处理后字符串会变成8 jan 2014 08:57:15,匹配格式串的结构。

3. 指定Locale解析为Timestamp

使用to_timestamp时传入locale="pt_BR"参数,同时注意小时格式:24小时制用HH,12小时制用hh(根据实际数据调整):

df_result = df.select(
    f.to_timestamp(f.col("clean_date"), "d MMM yyyy HH:mm:ss", locale="pt_BR").alias("new_date_column")
)

验证结果

执行后new_date_column会正确转换为Spark Timestamp类型,不会返回NaT值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:30:48