106

次の表があります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))

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

4

3 に答える 3

175

これにより、締め切りが表示されます。

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
于 2012-06-06T07:36:52.270 に答える