Snowflake cloud data platform 雪花更新表错误:绑定参数的类型不受支持

Snowflake cloud data platform 雪花更新表错误:绑定参数的类型不受支持,snowflake-cloud-data-platform,snowflake-schema,Snowflake Cloud Data Platform,Snowflake Schema,我试图根据传递的Log_Id通过存储过程更新一个表,并更新状态并在表中插入今天的日期时间戳(当表更新时) 存储过程: ... CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT) RETURNS FLOAT LANGUAGE JAVASCRIPT AS $$ var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_S

我试图根据传递的Log_Id通过存储过程更新一个表,并更新状态并在表中插入今天的日期时间戳(当表更新时)

存储过程:

...
CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT 
LANGUAGE JAVASCRIPT 
AS 
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = :2 WHERE LOG_ID = :3";
 var create_stmt1 = snowflake.execute({sqlText : sql_command1,
                    binds: [P_ETL_STATUS_CODE,(new Date()),P_LOG_ID].map(function(x){return x === undefined ? null : x})
                    }
                    );
return P_LOG_ID;
$$
;
。。。 调用更新_表('Test77',47)

但是,我得到了以下错误:

错误消息:存储过程更新表中的执行错误:绑定参数的类型不受支持Sun Apr 05 2020 18:39:31 GMT-0700(PDT)位于Snowflake.execute,第3行位置30

该表已包含日志Id 47。“ETL_EXEC_END_TIME”列是表中的时间戳ntz

你能告诉我哪里出了问题吗


Cheers

JavaScript日期格式与Snowflake的日期格式不兼容。从消息中可以看到,JavaScript发送以下消息:

“太阳2020年4月5日18:39:31 GMT-0700(PDT)”

您可以将其转换为更常见的日期格式:

我知道你想记录时间戳。那么为什么不使用当前的_TIMESTAMP命令呢

CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT 
LANGUAGE JAVASCRIPT 
AS 
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = CURRENT_TIMESTAMP::TIMESTAMP_NTZ WHERE LOG_ID = :2";
 var create_stmt1 = snowflake.execute({sqlText : sql_command1,
                    binds: [P_ETL_STATUS_CODE,P_LOG_ID].map(function(x){return x === undefined ? null : x})
                    }
                    );
return P_LOG_ID;
$$
;

JavaScript日期格式与Snowflake的日期格式不兼容。从消息中可以看到,JavaScript发送以下消息:

“太阳2020年4月5日18:39:31 GMT-0700(PDT)”

您可以将其转换为更常见的日期格式:

我知道你想记录时间戳。那么为什么不使用当前的_TIMESTAMP命令呢

CREATE OR REPLACE PROCEDURE update_table(P_ETL_STATUS_CODE VARCHAR,P_LOG_ID FLOAT)
RETURNS FLOAT 
LANGUAGE JAVASCRIPT 
AS 
$$
var sql_command1 = "UPDATE ETL_EXECUTION_STATUS_LOG SET ETL_STATUS_CODE = :1,ETL_EXEC_END_TIME = CURRENT_TIMESTAMP::TIMESTAMP_NTZ WHERE LOG_ID = :2";
 var create_stmt1 = snowflake.execute({sqlText : sql_command1,
                    binds: [P_ETL_STATUS_CODE,P_LOG_ID].map(function(x){return x === undefined ? null : x})
                    }
                    );
return P_LOG_ID;
$$
;

非常感谢您的回复@Gokan Atil现在一切正常感谢您的回复@Gokan Atil现在一切正常