使用'nanosecond'向SQL中的变量分配dateadd表达式时出错(雪花)

问题描述 投票:0回答:2

我正在尝试将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-datawarehouse dateadd
2个回答
0
投票

这确实是Snowflake的当前限制。

[今天,在set表达式中,右侧应该是一个简单的表达式,为此,它有一条“快速”的计算路径(不要过多地关注细节)。对于“秒”,存在这样的路径,对于“纳秒”,则不存在。

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

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

0
投票

看起来像个错误,

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

似乎工作得很好,并且同时数据类型在第二和十亿分之一秒都是相同的-我们将日期转换为TIMESTAMP_NTZ(9)的日期,因此两者之间也没有差异。

© www.soinside.com 2019 - 2024. All rights reserved.