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

PySpark转换13位Unix时间戳结果格式错误如何解决

问题定位

13位Unix时间戳的单位为毫秒,而PySpark内置的F.from_unixtime方法要求入参是秒级Unix时间戳。你的代码中错误将时间戳除以了1000 ** 3(即10亿),相当于把毫秒值按纳秒做了换算,最终输出的日期自然和预期不符。

修正代码

只需要将13位毫秒时间戳除以1000,得到正确的秒级时间戳后再做格式转换即可:

from pyspark.sql import functions as F

sd = df.withColumn('Date2', F.from_unixtime(F.col("Date") / 1000, "yyyy-MM-dd"))
display(sd)
可选优化写法

如果你使用的是PySpark 3.1及以上版本,可以直接用to_timestamp函数指定毫秒单位解析,不需要手动做除法,后续如果需要保留时分秒精度也更方便:

from pyspark.sql import functions as F

# 解析为时间类型后转日期,输出格式同yyyy-MM-dd
sd = df.withColumn('Date2', F.to_timestamp("Date", "ms").cast("date"))
display(sd)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:33:25