如何使用 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 日的数据分组?的主要内容,如果未能解决你的问题,请参考以下文章
Postgresql redshift 版本:每月月底检索销售额