[英]PostgreSQL DATE_TRUNC by 2 Weeks
我在PostgreSQL
中有这样的数据:
日期 | 客户 ID |
---|---|
05-04-2021 | 001 |
2021 年 10 月 4 日 | 002 |
2021 年 12 月 4 日 | 003 |
2021 年 4 月 19 日 | 001 |
20-04-2021 | 002 |
22-04-2021 | 003 |
我想让它变成这样:
日期 | 客户 ID |
---|---|
05-04-2021 | 001 |
05-04-2021 | 002 |
05-04-2021 | 003 |
2021 年 4 月 19 日 | 001 |
2021 年 4 月 19 日 | 002 |
2021 年 4 月 19 日 | 003 |
通常,我使用date_trunc('week', Date)
但如果是 2 周,我不知道该使用什么
您可以升级到 PostgreSQL v14(当前为 Beta)并使用date_bin
function:
SELECT date_bin('2 weeks', date::timestamp, '2021-01-11')::date,
custid
FROM mytable;
2021-01-11 是一个随机的星期一。
在现有版本的 Postgres 中,您可以使用算术:
select t.*,
(first_week + ((date - first_week::date) / 14)*14 * interval '1 day')::date as biweek
from (select t.*,
min(date_trunc('week', date)) over () as first_week
from t
) t;
这是一个 db<>fiddle。
子查询不是严格需要的,但它使代码更易于阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.