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

咨询Google BigQuery SQL自定义周期动态时间戳的正确语法

修正自定义周期动态时间戳的SQL语法错误

原SQL的核心问题

  1. 带空格的表名未转义:table name包含空格,必须用反引号包裹才能被数据库识别,建议直接改为无空格的规范表名(如table_name)。
  2. 字符串常量使用双引号:部分数据库会将双引号解析为标识符而非字符串,引发匹配错误,应改用单引号。
  3. 时间函数的数据库兼容性:不同数据库对时间处理函数的语法定义不同,需根据使用场景调整。

适配BigQuery的修正代码

SELECT *
FROM `table name` -- 带空格的表名用反引号包裹,推荐改为table_name
WHERE
  warehouse = 'Germany'
  AND pick_open_ts BETWEEN 
    TIMESTAMP_ADD(TIMESTAMP_TRUNC(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY), DAY), INTERVAL 7 HOUR)
    AND 
    TIMESTAMP_ADD(TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), DAY), INTERVAL 5 HOUR);

适配MySQL的修正代码

MySQL不支持TIMESTAMP_TRUNC、TIMESTAMP_ADD这类函数,需替换为原生时间函数:

SELECT *
FROM `table name`
WHERE
  warehouse = 'Germany'
  AND pick_open_ts BETWEEN 
    TIMESTAMPADD(HOUR, 7, DATE_TRUNC('DAY', SUBDATE(CURDATE(), 1)))
    AND 
    TIMESTAMPADD(HOUR, 5, DATE_TRUNC('DAY', CURRENT_TIMESTAMP()));

关键修正说明

  • 表名规范:尽量避免使用带空格、特殊字符的表名,若必须使用,需用反引号(`)包裹。
  • 字符串常量:SQL标准中字符串常量用单引号,双引号通常用于标识符(如表名、列名),避免混用引发解析错误。
  • 时间函数适配:如果使用PostgreSQL,可直接沿用BigQuery的函数逻辑;如果是其他数据库,需对应替换为原生时间处理函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:36