Snowflake日期拼接报错:Function EXTRACT不支持VARCHAR(10)参数类型
问题原因
你传入的日期值是字符串(VARCHAR)类型,但YEAR()和DAYOFYEAR()这类日期函数依赖底层的EXTRACT函数实现,而EXTRACT仅支持DATE/DATETIME类型的输入,不接受字符串,这就是报错的核心原因。
修正后的查询
你需要先把字符串格式的日期转换为DATE类型,再传给日期函数,有两种常见写法:
写法1:在函数内部转换日期类型
SELECT CONCAT(TO_VARCHAR(YEAR(TO_DATE($1, 'YYYY-MM-DD'))), TO_VARCHAR(DAYOFYEAR(TO_DATE($1, 'YYYY-MM-DD')))) FROM VALUES ('2022-01-01'), ('1972-10-01')
写法2:在VALUES中直接指定DATE类型
SELECT CONCAT(TO_VARCHAR(YEAR($1)), TO_VARCHAR(DAYOFYEAR($1))) FROM VALUES (DATE('2022-01-01')), (DATE('1972-10-01'))
注意:1972年10月1日的年积日是274,所以实际返回结果是1972274,和你预期的19721不符,大概率是你预期值写错了。
内容的提问来源于stack exchange,提问作者Woody1193
相关产品推荐
相关产品推荐

