当我在存储过程中使用相同的公式计算日期时,日期值格式不同 - 雪花
Posted
技术标签:
【中文标题】当我在存储过程中使用相同的公式计算日期时,日期值格式不同 - 雪花【英文标题】: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();
我附上了执行上述语句后雪花的截图供大家参考。
【问题讨论】:
【参考方案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 $$
【讨论】:
以上是关于当我在存储过程中使用相同的公式计算日期时,日期值格式不同 - 雪花的主要内容,如果未能解决你的问题,请参考以下文章
当另一个单元格的值发生变化时,一个单元格中的自动日期更新(通过公式计算)