我正在尝试从 select 语句中检索一个值,然后使用该值作为过滤器使用 binds 传递。如果我在存储过程中执行相同的 SELECT 语句,当我在雪花中执行 SELECT 语句时,我得到一个日期值“2021-07-05”,我得到不同格式的值“Mon Jul 05 2021 00:00:00 GMT -0700(太平洋夏令时)”。我尝试使用 TO_DATE,提取 DATE_PART 但没有任何效果。任何处理此问题并将该值转换为“2021-07-05”的方法。
使用的代码:
select TO_DATE(DATEADD(D,-1,CURRENT_DATE())) AS DATE;
CREATE OR REPLACE PROCEDURE TEST_SP()
RETURNS VARCHAR LANGUAGE JAVASCRIPT
AS $$
var condition=`select TO_DATE(DATEADD(D,-1,CURRENT_DATE())) AS DT`;
var condition_check = snowflake.createStatement({sqlText: condition}).execute();
condition_check.next();
var filter_condition = condition_check.getColumnValue(1);
return filter_condition
$$;
CALL TEST_SP();
答案 0 :(得分:2)
上面的存储过程是用 JavaScript 编写的,并返回一个 VARCHAR——一个字符串。
如问题所示:
CREATE OR REPLACE PROCEDURE TEST_SP()
RETURNS VARCHAR LANGUAGE JAVASCRIPT
AS $$
因此,当 JavaScript 试图返回一个 Date 值时,它在进入 Snowflake 空间之前会被转换为 String —— 这就是为什么您会看到不同之处。
尝试:
CREATE OR REPLACE PROCEDURE TEST_SP()
RETURNS DATE LANGUAGE JAVASCRIPT
AS $$