sql - 选择日期范围——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 月。
解决方案
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
推荐阅读
- mysql - 在 Golang 网站中使用模板显示 mysql 表
- python - 尝试将颜色渐变添加到 Matplotlib 图表
- angular - 什么可能导致在 AOT 构建中而不是在开发环境中发生的带有对象原型的 Uncaught TypeError?
- r - 使用局部变量更新函数
- android - Android使用相机意图并在本地保存图像
- java - 为 Android (Java) 实施 Google 保存的游戏
- java - 读取unicode字符代码JAVA
- python - Url 以 UTF-8 编码,但 Python 试图将其读取为 cp1256
- numpy - Xtensor:分配给视图时需要帮助
- java - 让子类序列化为超类的实例?