首页 > 解决方案 > 选择日期范围——Snowflake sql

问题描述

嗨,当尝试执行下面的代码时,我收到了错误。

错误:SQL 编译错误:无法将 [NUMBER(2,0)] 类型的参数 'EXTRACT(month from CURRENT_DATE())' 转换为预期类型 [DATE]

代码:选择 current_date,如果 day(CURRENT_DATE) 介于 1 和 10 之间,则 LAST_DAY(ADD_MONTHS(CURRENT_DATE(), - 2), 'MM') 否则 MONTH(CURRENT_DATE) 以日期结束;

我的意图是当日期在 1 到 10 之间时,它应该返回 -2 月。如果它高于日期,那么它应该返回上个月。

在这种情况下。因为现在是 11 月(1 到 10 日),所以它应该返回 9 月。这意味着 9。如果它大于 11 月 10 日,那么它应该返回 10 月。

标签: sqlsnowflake-cloud-data-platform

解决方案


CASE 语句的每个部分都需要返回相同的数据类型。您的 CASE 语句应该看起来像这样:

case when day(CURRENT_DATE) between 1 and 10 then MONTH(ADD_MONTHS(CURRENT_DATE(), - 2), 'MM') else MONTH(CURRENT_DATE) end as dates

推荐阅读