Stored procedures 雪花任务导致查询时区错误
我正在一个存储过程中运行一个简单的insert查询,其中包含Stored procedures 雪花任务导致查询时区错误,stored-procedures,task,snowflake-cloud-data-platform,Stored Procedures,Task,Snowflake Cloud Data Platform,我正在一个存储过程中运行一个简单的insert查询,其中包含to_timeatamp\u ntz(“列值”)以及其他列。 当我使用snowflake用户界面运行它并使用我的帐户登录时,它可以正常工作。 当我使用visualstudio实例中的python脚本调用它时,它工作得很好。 当调度任务调用同一存储过程时,该存储过程失败。 我在想,这是否与用户的“系统”时区和我的时区有关 存储过程LOAD_Data()中的执行错误:未能强制转换变量 值“2019-11-27T13:42:03.221Z”到
to_timeatamp\u ntz(“列值”)
以及其他列。
当我使用snowflake用户界面运行它并使用我的帐户登录时,它可以正常工作。
当我使用visualstudio实例中的python脚本调用它时,它工作得很好。
当调度任务调用同一存储过程时,该存储过程失败。
我在想,这是否与用户的“系统”时区和我的时区有关
存储过程LOAD_Data()中的执行错误:未能强制转换变量
值“2019-11-27T13:42:03.221Z”到时间戳
语句.execute,第24行第57位
我试图在任务和存储的进程中提供时区作为会话参数,但似乎没有解决这个问题。有什么想法吗?我猜(因为您没有包含导致错误的SQL语句),您在创建语句
对象时正在尝试绑定日期
对象。那不行
您可以绑定的唯一参数是数字、字符串、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();
时间戳输入格式导致了这种情况 我用“插入测试时间戳(T1)选择到时间戳(NTZ('2019-11-27T13:42:03.221Z');”完成了一项任务,其中列是NTZ时间戳(9),并成功运行。我是不是错过了什么可以重述的东西?让我知道,如果你可以设置一个类似的非常简单的任务,看看它是否工作。我想知道它是否特定于参数或数据。由于您从语句.execute()
调用中获得错误消息,因此包含生成错误的语句会很有用。您可以为存储的过程提供代码吗?因此,您从任务ddl中删除了时间戳\u INPUT\u FORMAT
?我有同样的问题,我想当设置它时,所有有时间的数据都会被忽略,或者抛出一个错误。