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

BigQuery中带时区偏移的STRING转TIMESTAMP问题求助

解决字符串转带时区TIMESTAMP的问题

你的字符串格式2021-12-04 12:53:38:203-06:00有两个特殊点:毫秒部分用冒号分隔,时区是±HH:MM的偏移格式,之前的解析失败主要是格式符用错了,正确的写法如下:

直接解析为带时区的时间(最终存储为UTC TIMESTAMP)

使用PARSE_TIMESTAMP时,对应格式符要完全匹配字符串结构:

  • %Y:4位年份(不要用%y,那是两位年)
  • %m-%d:月、日
  • %H:%M:%S:%f:时、分、秒、毫秒(%f会识别冒号后的三位毫秒)
  • %z:匹配±HH:MM的时区偏移(大写%Z是时区缩写,比如UTC、CST,不适用这里)

示例SQL:

SELECT PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S:%f%z', col1) AS converted_timestamp
FROM your_table

转换为指定时区(比如UTC)

如果需要明确转成UTC时间,可以用TIMESTAMP_TRANSFORM函数:

SELECT TIMESTAMP_TRANSFORM(
    PARSE_TIMESTAMP('%Y-%m-%d %H:%M:%S:%f%z', col1),
    'UTC'
) AS utc_timestamp
FROM your_table

为什么之前的尝试失败?

  • TIMESTAMP(col1):BigQuery默认不识别冒号分隔的毫秒和这种格式的时区偏移,必须手动指定解析格式
  • %y-%m-%d:%y是两位年份,和你的4位年份不匹配
  • %E*S:这个格式符用于匹配带小数点的秒(比如12:53:38.203),不适用冒号分隔的情况
  • %Z:对应时区缩写,无法匹配-06:00这种偏移量格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:54:59