【问题标题】:Error assigning a dateadd expression using 'nanosecond' to a variable in SQL (Snowflake)将使用“纳秒”的 dateadd 表达式分配给 SQL (Snowflake) 中的变量时出错
【发布时间】:2019-10-25 02:55:21
【问题描述】:

我正在尝试将 dateadd 表达式的结果分配给 Snowflake sql 脚本中的变量。

当我使用任何 date_or_time_part EXCEPT 纳秒时,分配工作正常。当我使用纳秒时,出现以下错误:

Unsupported feature 'assignment from non-constant source expression'**

是否存在纳秒行为不同的原因,或者这是一个错误?

-- 'second' is successfully set into the variable
set foo = dateadd("second"    , -1, '2019-10-25');

-- 'nanosecond' throws an error:
-- Unsupported feature 'assignment from non-constant source expression'.
set bar = dateadd("nanosecond", -1, '2019-10-25');

【问题讨论】:

  • 这似乎是一个错误。我会在 Snowflake 内部提出。

标签: snowflake-cloud-data-platform dateadd


【解决方案1】:

这确实是目前 Snowflake 的一个限制。

今天,在set 表达式中,右侧应该是一个简单的表达式,它有一个“快速”的计算路径(不再赘述)。对于“秒”,存在这样的路径,对于“纳秒”,则不存在。

您可以通过将正确的表达式设为“子查询”表达式来解决此问题,如下所示:

set x = (select dateadd(nanosecond, -1, '2019-10-25'));

【讨论】:

【解决方案2】:

看起来像一个错误,

select dateadd("nanosecond", -1, '2019-10-25') from dual

似乎工作得很好,同时秒和纳秒的数据类型相同 - 我们转换为 TIMESTAMP_NTZ(9) 的日期,所以那里也没有区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 2021-11-11
    • 2021-11-25
    相关资源
    最近更新 更多