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

Spark SQL to_timestamp函数无法生成含毫秒的时间戳问题求助

Spark SQL to_timestamp函数无法生成含毫秒的时间戳问题求助

嗨,我来帮你理清这个问题~

首先你得知道:Spark的to_timestamp其实已经正确解析了毫秒,只是默认的Timestamp类型显示格式会省略末尾的零,并且用ISO8601标准格式(带T分隔符和Z时区标识,Z代表UTC时区)来输出,这才让你误以为毫秒丢失了。

要解决你的需求——保留毫秒、去掉T和Z,只需要用date_format函数来指定你想要的输出格式就行,不用复杂的逻辑,一个简单的SELECT查询就能搞定:

SELECT date_format(
    to_timestamp('2009-06-12 01:07:22.024', 'yyyy-MM-dd HH:mm:ss.SSS'),
    'yyyy-MM-dd HH:mm:ss.SSS'
) AS formatted_timestamp

执行这个查询后,你会得到预期的结果:2009-06-12 01:07:22.024。

补充说明几点:

  • T是ISO8601格式中日期和时间的分隔符,Z代表UTC时区,这是Spark对Timestamp类型的默认显示规则;
  • 如果你需要指定时区(比如不想用UTC),可以在to_timestamp里加上时区参数,比如:
    SELECT date_format(
        to_timestamp('2009-06-12 01:07:22.024', 'yyyy-MM-dd HH:mm:ss.SSS', 'Asia/Shanghai'),
        'yyyy-MM-dd HH:mm:ss.SSS'
    ) AS formatted_timestamp
    
  • 如果你想验证毫秒确实被解析了,可以用extract函数单独提取毫秒部分:
    SELECT extract(millisecond FROM to_timestamp('2009-06-12 01:07:22.024', 'yyyy-MM-dd HH:mm:ss.SSS')) AS milliseconds
    
    这个查询会返回24,证明毫秒信息是存在的。

备注:内容来源于stack exchange,提问作者AAA6

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:58:08