You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake表存储默认日期值及存储过程插入报错问题咨询

问题根因

你在代码中仅执行了select current_date()查询,但没有读取该查询返回的实际日期值,直接将SQL语句字符串select current_date()作为绑定参数传入插入语句,数据库在尝试将该字符串转换为日期类型时失败,因此抛出对应报错。此外Snowflake JavaScript存储过程的binds参数要求传入数组类型,你的写法也不符合规范。

修正后完整代码
create or replace procedure test_dt() returns string not null language
javascript 
as 
$$ 
try { 
    var c_dt_sql = `select current_date()`; 
    // 执行查询获取结果集
    var result_set = snowflake.execute({sqlText:c_dt_sql});
    // 移动游标到结果集第一行
    result_set.next();
    // 取出第一列的日期值
    var current_dt = result_set.getColumnValue(1);

    var sql_query = `insert into test_date values (:1)`;
    // 绑定实际日期值执行插入,binds参数传入数组
    snowflake.execute( {sqlText: sql_query, binds:[current_dt]}); 
    return "插入成功,当前日期:" + current_dt;
}
catch(err) {
    return err.message; 
} 
$$;

执行call test_dt();即可完成正常插入。

简化方案

如果不需要在JavaScript逻辑中使用当前日期值,可以直接在插入SQL中调用current_date()函数,省去单独查询再绑定的步骤:

create or replace procedure test_dt() returns string not null language
javascript 
as 
$$ 
try { 
    var sql_query = `insert into test_date values (current_date())`;
    snowflake.execute({sqlText: sql_query}); 
    return "插入成功";
}
catch(err) {
    return err.message; 
} 
$$;

内容的提问来源于stack exchange,提问作者user16595206

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:54:04