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

PySpark SQL中如何将长整型Unix时间戳转换为datetime

问题根因

from_unixtime 只支持秒级(10位长度)Unix时间戳作为入参,你存储为long类型的时间戳如果是毫秒级(13位)、微秒级(16位),直接传入函数会因为数值差了1000/1000000的量级,最终输出完全不符合预期的错误日期。

修复方案

先根据时间戳精度把数值换算成秒级,再调用格式转换函数即可:

  • 13位毫秒级时间戳处理逻辑:
from_unixtime(
    (col("firstAvailableDateTimeUnix") / 1000).cast("long"),
    "yyyy-MM-dd HH:mm:ss"
)
  • 16位微秒级时间戳处理逻辑:
from_unixtime(
    (col("firstAvailableDateTimeUnix") / 1000000).cast("long"),
    "yyyy-MM-dd HH:mm:ss"
)

快速确认精度的方法:随便抽取一条时间戳样本数数字长度,10位可直接用原函数,13位除以1000,16位除以1000000即可,换算后记得转成long类型避免浮点精度问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:18:13