在Snowflake中,如何获取当前月份之前的数据?

问题描述 投票:0回答:1

在Snowflake中,如何获取当前月份之前的数据?

以下是我尝试过的查询错误。订单日期的格式如下:'YYYY-MM-DD'

SELECT
    OrderDate,
    OrderNumber,
    Customer
FROM
    OrderHistory
WHERE
    OrderDate < MONTH(GETDATE())
sql snowflake-cloud-data-platform
1个回答
0
投票

因此,您遇到问题的原因是您将 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
© www.soinside.com 2019 - 2024. All rights reserved.