【问题标题】:Snowflake retrieving data of past month on a particular date of current month雪花在当前月份的特定日期检索上个月的数据
【发布时间】:2021-07-15 03:59:46
【问题描述】:

我是 Snowflake 的新手,我的经理希望我在本月 5 日检索过去一个月的数据。例如,如果今天是 4 月 5 日,那么让雪花检索过去一个月的数据,即从 2021 年 3 月 1 日到 2021 年 3 月 31 日,其他月份的数据类似。

他之所以要在每个下个月的5号更新上个月的数据,因为那是我们获取数据的那一天。

我尝试使用DATEADD 函数,但它比仅使用此函数更复杂。

提前致谢!

PS:每个月的数据都有相同的日期。例如:日期就像 - 4 月 20 日将在数据库中存储为“2021-4-01” - 与 4 月 25 日相同的日期将存储为“2021-4-01”。

数据库中的日期没有变化,只是月份和年份。

【问题讨论】:

  • 在每个月的 5 号运行计划作业。
  • “比这更复杂”你能分享更多细节吗?
  • 我的意思是它比仅仅使用 dateadd 函数更复杂。
  • @FelipeHoffa EXTRACT( day FROM SYSDATE() ) = 5 THEN dateadd(month, -1, SYSDATE()) 。你认为这是正确的方法吗?

标签: sql datetime snowflake-cloud-data-platform dateadd sysdate


【解决方案1】:

关于可以通过 DATE_TRUNC 和 DATEADD 完成的上个月窗口

select 
    current_date as cd
    ,date_trunc('month', cd) as end_range
    ,dateadd('month', -1, end_range) as start_range
    ;

给予:

CD          END_RANGE   START_RANGE
2021-04-21  2021-04-01  2021-03-01

问题的另一半只在5号做,如果你有每天运行的任务等可以通过

,day(current_date) = 5 as is_the_fifth

或者如果采用内联方式

iff(day(current_date) = 5, <do true stuff>, <do false stuff>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多