Snowflake - 使用 Current_Date 的 While 循环
Snowflake - While Loop using Current_Date
在 Snowflake 中,我试图 运行 有开始日期的 while 循环,代码将循环直到它等于今天的日期。
我对雪花本身还很陌生。
第一个想法是在 while 循环中检查变量日期是否小于当前日期。即使 Current_Date 本身或归因于变量
,我似乎也无法正常工作
execute immediate $$
declare
opdate := '2022-04-29';
currdate := Current_Date;
begin
while (opdate <=currdate) do
opdate :=dateadd(day,1,opdate);
end while;
end;
$$
;
'CURRDATE' cannot have its type inferred from initializer
第二种选择是使用 datediff 来查看变量与 current_date 之间的差异是否等于零
execute immediate $$
declare
opdate := '2022-04-29';
currndate := 1;
begin
while (currndate<=0) do
currndate := datediff(day, opdate, CURRENT_DATE);
opdate :=dateadd(day,1,opdate);
end while;
end;
$$
;
error line 7 at position 39 invalid identifier 'CURRENT_DATE'
我已经尝试过此代码的许多不同变体,甚至在没有运气的情况下使用 for each 和 if 循环。我似乎无法检查变量是否小于当前日期。任何 help/pointers 将不胜感激。
没有 Current_Date 和设定的开始和结束日期,看起来 运行 很好
execute immediate $$
declare
opdate := '2022-04-29';
currdate := '2022-05-03';
begin
while (opdate <=currdate) do
opdate :=dateadd(day,1,opdate);
end while;
end;
$$
;
你能用开括号和闭括号试试 CURRENT_DATE() 吗?见下方区块
execute immediate $$
declare
opdate := '2022-04-29';
currdate := Current_Date();
begin
while (opdate <=currdate) do
opdate :=dateadd(day,1,opdate);
end while;
return opdate; --added this return
end;
$$
;
在 Snowflake 中,我试图 运行 有开始日期的 while 循环,代码将循环直到它等于今天的日期。
我对雪花本身还很陌生。
第一个想法是在 while 循环中检查变量日期是否小于当前日期。即使 Current_Date 本身或归因于变量
,我似乎也无法正常工作 execute immediate $$
declare
opdate := '2022-04-29';
currdate := Current_Date;
begin
while (opdate <=currdate) do
opdate :=dateadd(day,1,opdate);
end while;
end;
$$
;
'CURRDATE' cannot have its type inferred from initializer
第二种选择是使用 datediff 来查看变量与 current_date 之间的差异是否等于零
execute immediate $$
declare
opdate := '2022-04-29';
currndate := 1;
begin
while (currndate<=0) do
currndate := datediff(day, opdate, CURRENT_DATE);
opdate :=dateadd(day,1,opdate);
end while;
end;
$$
;
error line 7 at position 39 invalid identifier 'CURRENT_DATE'
我已经尝试过此代码的许多不同变体,甚至在没有运气的情况下使用 for each 和 if 循环。我似乎无法检查变量是否小于当前日期。任何 help/pointers 将不胜感激。
没有 Current_Date 和设定的开始和结束日期,看起来 运行 很好
execute immediate $$
declare
opdate := '2022-04-29';
currdate := '2022-05-03';
begin
while (opdate <=currdate) do
opdate :=dateadd(day,1,opdate);
end while;
end;
$$
;
你能用开括号和闭括号试试 CURRENT_DATE() 吗?见下方区块
execute immediate $$
declare
opdate := '2022-04-29';
currdate := Current_Date();
begin
while (opdate <=currdate) do
opdate :=dateadd(day,1,opdate);
end while;
return opdate; --added this return
end;
$$
;