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

在BigQuery中如何从含时区信息的时间戳中提取日期

问题解决方法

首先明确两次报错的核心原因:

  • 第一次调用DATE(Timestamp)报错,是因为Timestamp字段为字符串类型,常用数据库(如BigQuery、Spark SQL)的DATE()函数无法直接识别末尾带[时区名]后缀的时间字符串,自动类型转换失败。
  • 第二次解析失败,是因为PARSE_TIMESTAMP传入的格式匹配规则%Y%m%d和实际输入的字符串格式完全不匹配,该规则仅能解析20240520这类无分隔符的纯数字日期串。

正确实现代码

你只需要先通过匹配的格式规则把字符串解析为原生时间戳类型,再转日期即可:

-- 通用写法,默认用UTC时区转日期
DATE(
  PARSE_TIMESTAMP("%Y-%m-%dT%H:%M:%S%Ez[%Z]", Timestamp)
) AS LastUpdateDate

如果需要按照数据自带的斯德哥尔摩时区计算日期(避免时区偏移导致日期差1天的问题),可以给DATE函数指定时区参数:

-- 按欧洲/斯德哥尔摩时区转日期
DATE(
  PARSE_TIMESTAMP("%Y-%m-%dT%H:%M:%S%Ez[%Z]", Timestamp),
  "Europe/Stockholm"
) AS LastUpdateDate

上述代码里的格式规则和你的输入字符串完全对应:

  • %Y-%m-%d匹配年-月-日部分
  • T匹配字符串里的时间分隔符T
  • %H:%M:%S匹配时:分:秒部分
  • %Ez匹配带冒号的时区偏移量(比如+01:00)
  • [%Z]匹配方括号包裹的时区名称(比如[Europe/Stockholm])

内容的提问来源于stack exchange,提问作者Serge de Gosson de Varennes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:45:07