使用 'nanosecond' 将 dateadd 表达式分配给 SQL 中的变量时出错 (Snowflake)
Error assigning a dateadd expression using 'nanosecond' to a variable in SQL (Snowflake)
我正在尝试将 dateadd 表达式的结果分配给 Snowflake sql 脚本中的变量。
当我使用任何 date_or_time_part 除了纳秒 时,分配工作正常。当我使用纳秒时,出现以下错误:
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');
看起来像一个错误,
select dateadd("nanosecond", -1, '2019-10-25') from dual
似乎工作得很好,同时秒和纳秒的数据类型相同 - 我们转换为 TIMESTAMP_NTZ(9) 的日期,所以也没有区别。
这确实是Snowflake目前的一个局限。
今天,在set
表达式中,右侧应该是一个简单的表达式,其中有一个"fast" 计算路径(不赘述)。对于 "second",这样的路径存在,对于 "nanosecond",则不存在。
您可以通过将正确的表达式设为 "subquery" 表达式来解决此问题,如下所示:
set x = (select dateadd(nanosecond, -1, '2019-10-25'));
我正在尝试将 dateadd 表达式的结果分配给 Snowflake sql 脚本中的变量。
当我使用任何 date_or_time_part 除了纳秒 时,分配工作正常。当我使用纳秒时,出现以下错误:
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');
看起来像一个错误,
select dateadd("nanosecond", -1, '2019-10-25') from dual
似乎工作得很好,同时秒和纳秒的数据类型相同 - 我们转换为 TIMESTAMP_NTZ(9) 的日期,所以也没有区别。
这确实是Snowflake目前的一个局限。
今天,在set
表达式中,右侧应该是一个简单的表达式,其中有一个"fast" 计算路径(不赘述)。对于 "second",这样的路径存在,对于 "nanosecond",则不存在。
您可以通过将正确的表达式设为 "subquery" 表达式来解决此问题,如下所示:
set x = (select dateadd(nanosecond, -1, '2019-10-25'));