在Snowflake中,如何获取当前月份之前的数据?
以下是我尝试过的查询错误。订单日期的格式如下:'YYYY-MM-DD'
SELECT
OrderDate,
OrderNumber,
Customer
FROM
OrderHistory
WHERE
OrderDate < MONTH(GETDATE())
因此,您遇到问题的原因是您将 month 作为单个整数值( 1-12 )与日期进行比较,并且它们不相等,如上所述,您应该截断到本月的第一天,或者如果您需要使用
>=
大于或等于形式,就像您在 BETWEEN 中使用的那样,则为上个月的最后一天
select $1 as _date
,date_trunc('month', _date) as lt_1
,month(_date) as m1
,lt_1-1 as lt_eq1
,last_day(dateadd('month',-1,_date)) as lt_eq_2
,last_day(add_months(_date, -1)) as lt_eq_3
from values
('2024-05-01'::date),
('2024-04-30'::date),
(CURRENT_DATE), -- the upper case is a valid expression
(current_date()) -- the lower casse is a valid function
现在我们可以看到有几种方法可以获取前一天的日期,也可以有几种形式来表达当前日期。也可以看出为什么
m1
与 DATE 进行比较没有意义
_日期 | LT_1 | M1 | LT_EQ1 | LT_EQ_2 | LT_EQ_3 |
---|---|---|---|---|---|
2024-05-01 | 2024-05-01 | 5 | 2024-04-30 | 2024-04-30 | 2024-04-30 |
2024-04-30 | 2024-04-01 | 4 | 2024-03-31 | 2024-03-31 | 2024-03-31 |
2024-04-30 | 2024-04-01 | 4 | 2024-03-31 | 2024-03-31 | 2024-03-31 |
2024-04-30 | 2024-04-01 | 4 | 2024-03-31 | 2024-03-31 | 2024-03-31 |