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

SQL查询中时间旅行timestamp的正确插入位置咨询

Snowflake时间旅行AT()语法的正确放置位置

在Snowflake中,时间旅行的AT(timestamp => '2022-08-25 12:00:00'::timestamp)语法需要紧跟在每个目标表的引用之后,包括主查询里的所有关联表,以及子查询中的引用表。以下是修改后的完整SQL语句:

SELECT Table1.MTH_COD, Table1.ID, Table1.ETV_FLG,Table2.EXT_FLG, Table2.GEN_COD, Table3.AMOUNT_VALUE, Table3.CUR_IDT_COD as "Table3.CUR_IDT_COD"
from "Database"."Schema"."Table" as Table1 AT(timestamp => '2022-08-25 12:00:00'::timestamp)
    JOIN "Database"."Schema"."Table" as Table2 AT(timestamp => '2022-08-25 12:00:00'::timestamp)
        ON Table1.MTH_COD=Table2.MTH_COD
        AND Table1.ID=Table2.ID
 LEFT JOIN "Database"."Schema"."Table" as Table3 AT(timestamp => '2022-08-25 12:00:00'::timestamp)
ON Table1.MTH_COD=Table3.MTH_COD
AND Table1.GRADE_COD=Table3.GRADE_COD
        WHERE Table1.CLASS_COD IS DISTINCT FROM (select CLASS_COD_ID from "Database"."Schema"."ReferentialTable" AT(timestamp => '2022-08-25 12:00:00'::timestamp)
                                     where CLASS_COD = 'DE')
        AND EXT_FLG = 0

关键放置位置说明:

  • 主查询FROM子句:在表名与别名as Table1之间追加AT(...)
  • JOIN关联表:无论是JOIN还是LEFT JOIN,都在对应表的别名前添加时间旅行语法
  • 子查询中的引用表:子查询里的ReferentialTable同样需要添加,保证子查询也读取指定时间点的历史数据

如果需要不同表读取不同时间点的历史数据,只需单独修改对应表后的AT()参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:50:24