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

如何在BigQuery标准SQL中解析带时区的指定格式日期字符串

解析BigQuery标准SQL中带时区的日期字符串

我懂你现在的困扰——这种包含星期、月份、日期、时间、时区偏移和时区名称的字符串,直接用PARSE_DATE确实搞不定,毕竟PARSE_DATE只负责处理纯日期部分,没法覆盖后面的时间和时区信息。其实我们可以用**PARSE_TIMESTAMP**来完整解析整个字符串,再根据需求转成DATE类型就好。

直接可用的SQL示例

SELECT
  -- 解析成带时区的时间戳
  PARSE_TIMESTAMP("%a %b %d %Y %T GMT%z (%Z)", "Mon Sep 11 2017 00:00:00 GMT+0200 (CEST)") AS parsed_timestamp,
  -- 转成日期类型(默认使用会话时区)
  DATE(PARSE_TIMESTAMP("%a %b %d %Y %T GMT%z (%Z)", "Mon Sep 11 2017 00:00:00 GMT+0200 (CEST)")) AS parsed_date,
  -- 若需要指定时区转换日期(比如转成巴黎时区的日期)
  DATE(PARSE_TIMESTAMP("%a %b %d %Y %T GMT%z (%Z)", "Mon Sep 11 2017 00:00:00 GMT+0200 (CEST)"), "Europe/Paris") AS paris_timezone_date

格式符详细说明

我给你拆解一下用到的格式符,方便你理解和调整:

  • %a:匹配缩写的星期名称(比如Mon)
  • %b:匹配缩写的月份名称(比如Sep)
  • %d:匹配两位数的日期(这里你之前用了%j,那是一年中的第几天,和你的字符串格式不符,所以要改成%d)
  • %Y:匹配4位数的年份(比如2017)
  • %T:匹配24小时制的时间格式HH:MM:SS(对应字符串里的00:00:00)
  • GMT%z:匹配时区偏移部分,%z会识别+0200这种带符号的偏移格式,前面的GMT要和字符串里的前缀对应上
  • (%Z):匹配括号里的时区缩写(比如(CEST)),%Z会识别这类时区标识

补充说明

如果你的字段是动态的(不是固定字符串),只需要把示例里的字符串替换成你的字段名就行,比如:

SELECT
  DATE(PARSE_TIMESTAMP("%a %b %d %Y %T GMT%z (%Z)", your_date_column)) AS parsed_date
FROM
  your_dataset.your_table

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:43:18