1. ホーム
  2. postgresql

[解決済み] postgresqlのdatetimeに日数を追加する方法

2022-11-06 13:24:44

質問

次のようなテーブルがあります。 projects .

id title        created_at               claim_window
1  Project One  2012-05-08 13:50:09.924  5
2  Project Two  2012-06-01 13:50:09.924  10

A) 計算で期限を求めたい。 deadline = created_at + claim_window(No. of days) .

以下のようなものです。

id title        created_at               claim_window  deadline
1  Project One  2012-05-08 13:50:09.924  5             2012-05-13 13:50:09.924
2  Project Two  2012-06-01 13:50:09.924  10            2012-06-11 13:50:09.924

B) 期限が過ぎたプロジェクトも見つけたい。

id title        created_at               claim_window  deadline
1  Project One  2012-05-08 13:50:09.924  5             2012-05-13 13:50:09.924

以下のようなことをやってみる。

SELECT * FROM "projects" 
WHERE (DATE_PART('day', now()- created_at) >= (claim_window+1))

しかし、なぜかうまくいきません。

どうすればよいのでしょうか?

これは、あなたが期限を与えるだろう。

select id,  
       title,
       created_at + interval '1' day * claim_window as deadline
from projects

また、関数 make_interval を使うこともできます。

select id,  
       title,
       created_at + make_interval(days => claim_window) as deadline
from projects

締め切りが過ぎたプロジェクトを全て取得するには

select *
from (
  select id, 
         created_at + interval '1' day * claim_window as deadline
  from projects
) t
where localtimestamp at time zone 'UTC' > deadline