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

Pyspark如何将科学计数法字符串数字列转换为Timestamp时间戳类型

科学计数法字符串转Timestamp类型解决方法

错误原因

你之前使用的写法逻辑错误,to_timestamp第二个参数是日期格式模板,仅适配本身为日期格式的字符串(如2023/01/01 12:00:00),而你持有的1.63E+15是科学计数法表示的数值型时间戳,无法通过日期模板直接解析。

解决逻辑

  • 先将字符串格式的科学计数法转为数值类型
  • 再根据时间戳单位调整精度:1.63E+15属于微秒级时间戳,要除以1000000转换为秒级后再传入to_timestamp转换

可用代码

from pyspark.sql import functions as F

# 普通精度版本
sdf1 = sdf1.withColumn('num_ts', F.col('date_str').cast('double')) \
           .withColumn('date', F.to_timestamp(F.col('num_ts') / 1e6))
# 查看结果
sdf1.select('date_str', 'date').show()

高精度需求可选方案:如果担心double类型丢失精度,可以先转为Decimal类型再处理

sdf1 = sdf1.withColumn('num_ts', F.col('date_str').cast('decimal(20,0)')) \
           .withColumn('date', F.to_timestamp(F.col('num_ts') / 1000000))

如果转换后得到的日期和预期不符,调整除数的量级即可:毫秒级时间戳除以1e3、纳秒级时间戳除以1e9,直到匹配预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:06:03