gpt4 book ai didi

postgresql - 如何在 PostgreSQL 中按自定义三个月 date_trunc?

转载 作者:行者123 更新时间:2023-11-29 11:58:38 26 4
gpt4 key购买 nike

我正在开展一个项目,其中财政年度按三个月衡量,尽管听起来很奇怪,但由于国家/地区的规定,每个三个月都是从每月的第 10 天而不是第 1 天开始计算的。因此,第一个三个月被认为是从 1 月 10 日开始,到三个月后的 9 日结束。有没有一种方法可以date_trunc 或简单地使用 PostgreSQL 中的这些自定义三个月对时间戳列进行分组?

到目前为止,我只能按月/日/周查询数据,例如:

从 myTable SELECT(
SUM(price) 作为总计,
date_trunc('月', '时间戳')
)
分组依据(总计)

最佳答案

使用函数(或其中的表达式):

create or replace function get_trimester(timestamp)
returns integer language sql immutable as $$
select (extract('month' from $1::date- 9)::int- 1)/ 3 + 1
$$;

检查一些日期的函数:

with my_table(t) as (
values
('2017-01-09'::timestamp),
('2017-01-10'),
('2017-04-09'),
('2017-04-10'),
('2017-07-09'),
('2017-07-10'),
('2017-10-09'),
('2017-10-10'),
('2017-12-31')
)

select t, get_trimester(t)
from my_table

t | get_trimester
---------------------+---------------
2017-01-09 00:00:00 | 4
2017-01-10 00:00:00 | 1
2017-04-09 00:00:00 | 1
2017-04-10 00:00:00 | 2
2017-07-09 00:00:00 | 2
2017-07-10 00:00:00 | 3
2017-10-09 00:00:00 | 3
2017-10-10 00:00:00 | 4
2017-12-31 00:00:00 | 4
(9 rows)

关于postgresql - 如何在 PostgreSQL 中按自定义三个月 date_trunc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46423702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com