J'ai un tableau suivant 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) Je veux trouver l'échéance avec le calcul deadline = created_at + claim_window(No. of days)
.
Quelque chose comme suivre.
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] Je veux aussi trouver les projets dont le délai est écoulé
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
J'essaie quelque chose comme suivre.
SELECT * FROM "projects" WHERE (DATE_PART('day', now()- created_at) >= (claim_window+1))
Mais pour une raison quelconque, cela ne fonctionne pas.
Cela vous donnera la date limite:
select id,
title,
created_at + interval '1' day * claim_window as deadline
from projects
Pour obtenir tous les projets dont la date limite est dépassée, utilisez:
select *
from (
select id,
created_at + interval '1' day * claim_window as deadline
from projects
) t
where localtimestamp at time zone 'UTC' > deadline
Pour moi, je devais mettre tout l'intervalle entre guillemets simples et pas seulement la valeur de l'intervalle.
select id,
title,
created_at + interval '1 day' * claim_window as deadline from projects
Au lieu de
select id,
title,
created_at + interval '1' day * claim_window as deadline from projects