如何使用 postgresql 将每月 26 日到下个月 25 日的数据分组?

Posted

技术标签:

【中文标题】如何使用 postgresql 将每月 26 日到下个月 25 日的数据分组?【英文标题】:How to group data from 26th of a month to 25th of the next month using postgresql? 【发布时间】:2021-01-08 14:34:55 【问题描述】:

我想将“月”的开始定义为上一个日历月的第 26th 天(当然也可以在 25th 结束)。 p>

如何使用 date_trunc() 按月份的定义进行分组?

【问题讨论】:

【参考方案1】:

这个表达式给出了你想要的月份:

date_trunc(
  'month',
  date_add(
    day, 
    case
      when extract(day from date) > 25 then 7
      else 0
    end),
    my_date_col
  )
)

选择它并按它分组。

逻辑是:如果一个月中的某天大于 25,则添加一些天以将其撞到下个月,然后再将其截断为该月。

【讨论】:

【参考方案2】:

我会使用 INTERVAL 来计算正确的日期。这里是使用 generate_series() 的示例:

SELECT  d::date as reference_date
    ,   (d + interval '25 days')::date AS first_day
    ,   (d + interval '1 month' + interval '24 days')::date as last_day
FROM    generate_series('2020-01-01'::timestamp, '2021-01-01'::timestamp, '1 month') g(d);

【讨论】:

以上是关于如何使用 postgresql 将每月 26 日到下个月 25 日的数据分组?的主要内容,如果未能解决你的问题,请参考以下文章

固定日期范围之间的 MySQL 记录

Pyspark Join 使用每月范围

Postgresql redshift 版本:每月月底检索销售额

使用 Pandas 将每日数据重新采样为每月(日期格式)

在 Postgresql 的时间序列数据中添加缺少的每月日期

每月结束的数据准备 - 超过 12 个月