【问题标题】:Date value format is different when I use the same formula to calculate date in Stored Procedure - Snowflake当我在存储过程中使用相同的公式计算日期时,日期值格式不同 - 雪花
【发布时间】:2021-07-06 23:22:09
【问题描述】:

我正在尝试从 select 语句中检索一个值,然后在传递时使用该值作为使用 binds 的过滤器。如果我在存储过程中执行相同的 SELECT,我只在雪花中执行 SELECT 语句时会得到一个日期值“2021-07-05”,我得到不同格式的值“2021 年 7 月 5 日星期一 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(); 

我附上了执行上述语句后雪花的截图供大家参考。

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    上面的存储过程是用 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 $$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多