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

BigQuery如何解析以冒号分隔毫秒的时间戳字符串

解析冒号分隔毫秒的时间戳字符串

你的问题出在格式符%E3S只支持小数点分隔的毫秒(如40.890),但你的时间戳用的是冒号(40:890),所以直接解析会失败。下面是两种可行的解决方法:

方法一:正则替换最后一个冒号为小数点

用regexp_replace匹配并替换最后一个冒号(确保只替换毫秒前的那个),再用标准格式解析:

select parse_timestamp('%Y-%m-%d %H:%M:%S.%f', regexp_replace('2017-08-18 16:04:40:890', ':(?=[0-9]{3}$)', '.'))
  • 正则:(?=[0-9]{3}$)的作用:匹配后面跟着三位数字且位于字符串末尾的冒号,避免替换前面的时分秒分隔符。
  • 格式符%S.%f用于解析秒+毫秒/微秒部分,三位毫秒会被正确识别。

方法二:拆分字符串后重新拼接

通过split_part按冒号拆分字符串,再将最后一段(毫秒)用小数点拼接回秒部分:

select parse_timestamp(
    '%Y-%m-%d %H:%M:%S.%f',
    concat(
        split_part('2017-08-18 16:04:40:890', ':', 1), ':',
        split_part('2017-08-18 16:04:40:890', ':', 2), ':',
        split_part('2017-08-18 16:04:40:890', ':', 3), '.',
        split_part('2017-08-18 16:04:40:890', ':', 4)
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:33:10