首页 > 解决方案 > SQL 日期场景,用于在本月 1 日获取上个月的数据,然后在上个月下降

问题描述

我正在尝试在 Snowflake 中重新创建现有视图(最初在 SQL Server 中)。我需要获取上个月的数据,这很容易,但情况如下:

标签: sqlfunctiondatedatetimesnowflake-cloud-data-platform

解决方案


WITH dates AS (SELECT * FROM VALUES ('2021-03-01'),
     ('2021-03-02'),
     ('2021-03-03'),
     ('2021-02-01'),
     ('2021-02-02') v(day))
SELECT day
    ,DATE_TRUNC('month',DATEADD('day',-1, day)) AS from_date
    ,DATEADD('month',1, from_date ) AS to_date
FROM dates
ORDER BY 1;

我们得到结果:

DAY         FROM_DATE                   TO_DATE
2021-02-01  2021-01-01 00:00:00.000     2021-02-01 00:00:00.000
2021-02-02  2021-02-01 00:00:00.000     2021-03-01 00:00:00.000
2021-03-01  2021-02-01 00:00:00.000     2021-03-01 00:00:00.000
2021-03-02  2021-03-01 00:00:00.000     2021-04-01 00:00:00.000
2021-03-03  2021-03-01 00:00:00.000     2021-04-01 00:00:00.000

推荐阅读