簡體   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