求助:创建返回指定日期最后时刻的Snowflake函数报错
Snowflake函数创建错误分析与修正
你的代码存在三个关键问题:
- 命名冲突:
date是Snowflake的内置函数,用它作为自定义函数名会触发语法错误,必须更换为自定义名称,比如get_day_end_timestamp。 - 参数未利用:函数定义了参数
Dt,但逻辑里却用了current_timestamp,完全没用到传入的指定日期,根本无法实现“返回指定日期当天最后时刻”的需求。 - 计算逻辑冗余:原代码的时间计算绕了弯路,直接基于传入参数处理更简洁。
修正后的函数代码如下:
CREATE OR REPLACE FUNCTION get_day_end_timestamp(Dt TIMESTAMP) RETURNS TIMESTAMP AS $$ SELECT DATEADD(SECOND, -1, DATEADD(DAY, 1, DATE_TRUNC('day', Dt))) $$;
调用示例:
-- 获取2022-09-29当天的最后时刻 SELECT get_day_end_timestamp('2022-09-29'::TIMESTAMP);
执行后会返回2022-09-29 23:59:59.000
内容的提问来源于stack exchange,提问作者Sue
相关产品推荐
相关产品推荐

