Snowflake Update table error: Unsupported type for binding argument

Snowflake Update table error: Unsupported type for binding argument

我正在尝试根据传递的 Log_Id 通过存储过程更新 table 并更新状态并在 table 中插入今天的日期时间戳(当 table 已更新)。

存储过程:

...
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;
$$
;

... 调用 update_table('Test77',47)

但是,我收到以下错误:

Error message: Execution error in stored procedure UPDATE_TABLE: Unsupported type for binding argument Sun Apr 05 2020 18:39:31 GMT-0700 (PDT) At Snowflake.execute, line 3 position 30

The table already contains Log_Id 47. Column 'ETL_EXEC_END_TIME' is timestamp_ntz in table.

你能指出我哪里出错了吗?

干杯

JavaScript 日期格式与 Snowflake 的日期格式不兼容。从消息中可以看出,JavaScript 发送了这个:

"Sun Apr 05 2020 18:39:31 GMT-0700 (PDT)"

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

我看到你想记录时间戳。那你为什么不使用 CURRENT_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;
$$
;