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

PySpark使用date_trunc截断秒数且保留原时间格式的实现方案

解决Spark时间截断后保留T分隔符的问题

我懂你的需求啦——想要把时间截断到分钟级别(去掉秒数),同时还保留原有的ISO 8601格式(也就是日期和时间之间的T分隔符),而不是date_trunc默认输出的空格分隔样式。

其实问题的核心在于:date_trunc返回的是Timestamp类型,Spark默认展示Timestamp时会用空格分隔日期和时间,但我们可以通过格式转换来得到想要的带T的字符串格式。

具体解决方案

直接在date_trunc的基础上,用date_format指定输出格式即可:

from pyspark.sql import functions as F

# 先截断到分钟,再格式化为带T的ISO 8601样式
df.withColumn("time_updated", F.date_format(F.date_trunc("minute", F.col("time")), "yyyy-MM-dd'T'HH:mm:ss"))
.show(truncate=False)

这样执行后,time_updated字段就会输出你期望的2022-02-21T11:23:00格式啦。

额外说明

  • 如果之后还需要对这个时间字段做时间运算(比如加减、比较),建议保留Timestamp类型存储,只在需要展示/导出的时候用date_format转换格式;
  • 要是你只需要字符串格式的结果,上面的代码就完全满足需求,既截断了秒数,又保留了T分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 21:42:50