繁体   English   中英

PostgreSQL DATE_TRUNC 2 周

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM