【问题标题】:Selecting data based off rolling quarter value根据滚动季度值选择数据
【发布时间】:2023-02-03 01:11:36
【问题描述】:

我需要创建一个条件,根据当前季度筛选未来 8 个季度的数据中的日期。问题是这需要滚动。例如,在我写这篇文章时,时间是 2/2/2023。数据条件需要是这样的,它需要当前季度(即第一季度)的数据,然后是当前季度+1、+2 等的数据。问题是当我进入新的一年时,就像 PostgreSQL 一样不允许你做datefield + interval '1 quarter'。因此,当我需要一种自动提取 2023 年第一季度数据的方法时,我不能简单地使用间隔。当我进入第四季度时,这也是一个问题。我不能做datefield + interval '1 quarter',因为那给出了不存在的 Q5。

有什么技巧可以解决这个问题吗?我目前的想法是,我需要创建条件逻辑,如果当前季度是第 4 季度,则过滤当年第 1 季度数据 + 1 中的数据,但我想知道是否有更有效的方法来执行此操作。

我当前(和不完整)的解决方案如下:

select * 
from mytable 
where extract(quarter from datefield) = extract(quarter from current_date + interval '1 quarter')
    and datefield >= concat(extract(year from current_date), '-01-01')::date
    and datefield <= current_date + interval '2 years'

谢谢!

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    又挖了一个小时左右,我发现了另一个回答这个问题的帖子:

    see here

    该解决方案依赖于 date_trunc,这很有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多