雪花任务导致查询时区错误

Snowflake Tasks causing error in timezone in queries

我是 运行 存储过程中的一个简单插入查询,其中包含 to_timeatamp_ntz("column value") 以及其他列。 当我 运行 使用雪花 UI 并使用我的帐户登录时,这很好用。 当我使用我的 visual studio 实例中的 python 脚本调用它时,这工作正常。 同一个存储过程在被计划任务调用时失败。 我在想这是否与用户的 'System' 时区与我的时区有关。

Execution error in store procedure LOAD_Data(): Failed to cast variant value "2019-11-27T13:42:03.221Z" to TIMESTAMP_NTZ At Statement.execute, line 24 position 57

我试图在任务和存储过程中提供时区作为会话参数,但似乎没有解决这个问题。有什么想法吗?

我猜(因为你没有包含导致错误的 SQL 语句)你试图在创建 Statement 对象时绑定 Date 对象.那不行。

您可以绑定的唯一参数是数字、字符串、null,以及您只能从结果集中获得的特殊 SfDate 对象(据我所知)。大多数其他参数必须在绑定之前使用 mydate.toJSON()JSON.stringify(myobj) 等转换为 string,例如:

var stmt = snowflake.createStatement(
   { sqlText: `SELECT :1::TIMESTAMP_LTZ NOW`, binds: [(new Date).toJSON()] }
);

Date 对象错误可能会产生误导,因为导致错误的 Date 对象可以转换并显示为错误消息中的字符串。

我发现了问题: 我的任务使用的复制粘贴效果与此类似:

CREATE TASK TASK_LOAD_an_sp
  WAREHOUSE = COMPUTE_WH
  TIMEZONE = 'US/Eastern'  
SCHEDULE = 'USING CRON  0/30 * * * * America/New_York'
  TIMESTAMP_INPUT_FORMAT = 'YYYY-MM-DD HH24'
AS
    Call LOAD_an_sp();

时间戳输入格式导致此问题。