【问题标题】:Timestamp issue in Time Travel feature in SnowflakeSnowflake 时间旅行功能中的时间戳问题
【发布时间】:2020-01-08 09:56:56
【问题描述】:

我是 SnowFlake 的新手。我在 Snowflake 中创建了一个表。以下是详细信息。

# Created @ 2020-01-07 21:11:20.810 -0800
CREATE TABLE employee2(
emp_id INT,
f_name STRING,
l_name STRING,
dept STRING);

当我尝试使用以下命令获取时间旅行数据时,它给了我错误。

查询:

select * from employee2 at(timestamp => '2020-01-07 21:12:20.810 -0800'::timestamp);

错误: 时间旅行数据不适用于表 EMPLOYEE2。请求的时间要么超出允许的时间旅行期,要么早于对象创建时间。

虽然下面的命令运行良好。

SELECT * FROM employee2 at(offset => -60 * 2);

对此的任何帮助将不胜感激。

问候, 尼拉杰

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    时间旅行功能的持续时间因帐户而异。您需要检查您创建的帐户类型(标准/企业等)。标准版保留期为 1 天,企业版保留期为 90 天。

    我还建议您在使用此功能之前设置时区以提高准确性

    ALTER SESSION  SET TIMEZONE = 'UTC' 
    

    然后尝试运行此查询。毫秒部分的微小改动。

    select * from employee2 before(timestamp => '2020-01-07 21:12:20.810'::timestamp);
    

    AT 子句用于偏移量,因此当您使用时间戳或任何字段时,请使用 BEFORE 关键字。

    --time travel 2 min ago
    SELECT * FROM employee2 at(offset => -60 * 2);
    

    希望这有帮助,如果没有,请通过屏幕截图分享您的评论和错误。

    【讨论】:

    • @H Roy :将会话时区更改为“UTC”解决了该问题。感谢您的快速帮助和解决方案。
    【解决方案2】:

    如果时间戳在本地时区,请尝试转换为 TIMESTAMP_LTZ 数据类型:

    select * from employee2 at(timestamp => '2020-01-07 21:12:20.810 -0800'::timestamp_ltz);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2017-09-08
      相关资源
      最近更新 更多