109 votes

Comment ajouter le nombre de jours dans postgresql datetime

J'ai un tableau suivant 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) Je veux trouver la date limite 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.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) Je veux aussi trouver les projets dont la date limite est dépassée

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

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.

182voto

a_horse_with_no_name Points 100769

Cela vous donnera la date limite :

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

Alternativement, la fonction make_interval peut être utilisée :

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

Pour obtenir tous les projets où la date limite est 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

26voto

Jason Silver Points 246

Pour moi, j'ai dû mettre l'intervalle entier dans des 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 Date/Heure Postgres

2voto

Sam Coorg Points 305

vous pouvez simplement utiliser le code ci-dessous pour ajouter ou soustraire n'importe quel champ de date

sélectionner la date('08/30/2021') + 180 --- elle donnera la date des 180 prochains jours

select current_date + 180 --- it donnera la date des 180 prochains jours

select current_date - 180 --- it donnera avant 180 jours date

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X