snowflake-cloud-data-platform - 雪花中的时间戳转换错误
问题描述
我是雪花的新手。我在我的 ETL 过程中使用了一个控制表。我想更新控制表的 watermark_value 字段中的当前时间戳。下面是我的程序代码
CREATE OR REPLACE PROCEDURE test_sp()
RETURNS string
LANGUAGE javascript
EXECUTE AS CALLER
AS
$$
var result = "";
snowflake.execute( {sqlText: "BEGIN TRANSACTION;"} );
try {
var max_sync_sql_command = `SELECT watermark_value,dateadd(minute, -1, sysdate()) as new_watermark_value
from APPLICATION_CONTROL
WHERE TABLE_NAME = 'TEST1'; `
var max_sync_time_result = snowflake.execute ({ sqlText: max_sync_sql_command });
max_sync_time_result.next();
var max_sync_time = max_sync_time_result.getColumnValue(1);
var new_watermark_value = (max_sync_time_result.getColumnValue(2));
/*Some ETL Code Here*/
var update_watermark_sql_command = `update APPLICATION_CONTROL
set watermark_value = to_varchar( to_timestamp( '`+new_watermark_value+`', 'DY MON DD HH24:MI:SS TZD YYYY') , 'YYYY-MM-DD HH24:MI:SS')
WHERE TABLE_NAME = 'TEST1'; `
snowflake.execute ({ sqlText: update_watermark_sql_command });
snowflake.execute( {sqlText: "COMMIT;"} );
result = "Record updated Successfully"
}
catch (err)
{
snowflake.execute( {sqlText: "ROLLBACK;"} );
result = "Failed: Code: " + err.code + "\n State: " + err.state;
result += "\n Message: " + err.message;
result += "\nStack Trace:\n" + err.stackTraceTxt;
}
return result;
$$;
我在程序执行期间遇到错误
Failed: Code: 100183
State: P0000
Message: Can't parse 'Fri Jun 11 2021 12:47:38 GMT-0700 (Pacific Daylight Time)' as timestamp with format 'DY MON DD YYYY HH24:MI:SS TZD'
Stack Trace:
At Snowflake.execute, line 25 position 12
application_control 表中 watermark_value 列的数据类型为 TIMESTAMP_NTZ。
任何帮助,将不胜感激。提前致谢。
解决方案
我在获取值时将时间戳转换为字符(用于 to_char 函数)并且它有效。
var max_sync_sql_command = `SELECT watermark_value,to_char(dateadd(minute, -1, sysdate())) as new_watermark_value
from APPLICATION_CONTROL
WHERE TABLE_NAME = 'TEST1'; `
推荐阅读
- javascript - 返回映射行 NULL
- systemjs - 如何在我的 angular9 项目中使用 SystemJS
- python - 设置一定百分比的数据帧等于 NaN
- elasticsearch - 禁用对象中的 ElasticSearch 查询字段
- javascript - 使用 Node.js 将文件名转换为时间戳
- html - 在 Angular 中按下提交按钮时观察值的变化
- python - tkinter 标签周围没有白框
- mysql - useSelector 函数没有更新调度函数后的状态 -react hooks
- ubuntu - 错误:安装 cocoapods 时找不到有效的 gem 'cocoapods' (>= 0)
- java - 链接几个复选框以获得某些结果