如何循环遍历javascript存储过程snowflake中的日期字符串参数
我不熟悉javascript,snowflake在存储过程中使用类似js的语法 我正在尝试创建动态SQL,以便它在开始日期和结束日期之间循环,以便根据日期从不同的s3文件夹复制到其中如何循环遍历javascript存储过程snowflake中的日期字符串参数,javascript,sql,date,stored-procedures,snowflake-cloud-data-platform,Javascript,Sql,Date,Stored Procedures,Snowflake Cloud Data Platform,我不熟悉javascript,snowflake在存储过程中使用类似js的语法 我正在尝试创建动态SQL,以便它在开始日期和结束日期之间循环,以便根据日期从不同的s3文件夹复制到其中 CREATE PROCEDURE load_dynamic_s3path_to_table(begin_date strings, end_date strings) AS $$ var stmt = snowflake.createStatement( {sqlText: &q
CREATE PROCEDURE load_dynamic_s3path_to_table(begin_date strings, end_date strings)
AS
$$
var stmt = snowflake.createStatement(
{sqlText: "copy into table from s3://test/2020-01-01/"}
);
var rs = stmt.execute();
$$;
基于存储过程中的日期参数,例如开始日期2020-01-01、结束日期2020-01-03
我想执行复制到命令3次
copy into table from s3://test/2020-01-01/
copy into table from s3://test/2020-01-02/
copy into table from s3://test/2020-01-03/
我认为伪代码是这样的:
CREATE PROCEDURE load_dynamic_s3path_to_table(begin_date strings, end_date strings)
AS
$$
var dates = begin_date
while date(dates)>=date(begin_date) and date(dates)<date(end_date)
var stmt = snowflake.createStatement(
{sqlText: "copy into table from s3://test/" + dates}
);
var rs = stmt.execute();
dates+=1
$$;
CREATE PROCEDURE load\u dynamic\u s3path\u to\u table(开始日期字符串、结束日期字符串)
作为
$$
变量日期=开始日期
虽然date(dates)>=date(begin_date)和date(dates)在JavaScript中管理日期并不简单,但此存储过程满足您的需要:
创建或替换过程日期(“开始日期”字符串、“结束日期”字符串)
返回字符串
语言javascript
作为
$$
函数打印日期(d){
返回d.toISOString().split(“T”)[0]
}
函数执行查询(d){
var stmt=snowflake.createStatement({
sqlText:“选择'+d+“'x”
//“从s3://test/”复制到表中”+d
});
var rs=stmt.execute();
rs.next();
返回rs.getColumnValue(1);
}
var运行日期=新日期(开始日期)
var last_day=新日期(结束日期)
var总天数=(最后一天-运行日期)/(1000*60*60*24);
cs=[]
对于(var iter=0;iterthanks alot@Felipe Hoffa,我很难处理js和snowflake sql之间的日期,您做得很好。我能够使用上述方法生成动态sql