web-dev-qa-db-ja.com

postgresql datetimeに日数を追加する方法

次の表projectsがあります。

_id title        created_at                     claim_window
1  Project One  2012-05-08 13:50:09.924437     5
2  Project Two  2012-06-01 13:50:09.924437     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.924437     5            2012-05-13 13:50:09.924437
2  Project Two  2012-06-01 13:50:09.924437     10           2012-06-11 13:50:09.924437
_

B]期限が過ぎているプロジェクトも見つけたい

_id title        created_at                     claim_window deadline
1  Project One  2012-05-08 13:50:09.924437     5            2012-05-13 13:50:09.924437
_

私は次のようなものを試します。

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

しかし、何らかの理由で機能していません。

57
Salil

これはあなたに締め切りを与えます:

select id,  
       title,
       created_at + interval '1' day * 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
98

私にとっては、間隔の値だけでなく、間隔全体を単一引用符で囲む必要がありました。

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

の代わりに

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

Postgresの日付/時刻関数

8
Jason Silver