web-dev-qa-db-fra.com

Comment ajouter le nombre de jours dans datetime postgresql

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.

57
Salil

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
98

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   

Fonctions Postgres Date/Time

8
Jason Silver