programing

postgresql 날짜 시간에 일 수를 추가하는 방법

copysource 2023. 6. 4. 18:03
반응형

postgresql 날짜 시간에 일 수를 추가하는 방법

다음 테이블이 있습니다.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

저는 계산으로 마감일을 찾고 싶습니다.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

마감일이 지난 프로젝트도 찾고 싶습니다.

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))

하지만 어떤 이유에서인지 그것은 작동하지 않습니다.

이렇게 하면 마감일을 알 수 있습니다.

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

저는 구간의 값뿐만 아니라 전체 구간을 단일 따옴표로 묶어야 했습니다.

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 날짜/시간 함수

아래 코드를 사용하여 날짜 필드를 추가하거나 뺄 수 있습니다.

select date('08/30/2021') + 180  ---it will give next 180 days date

select current_date + 180  ---it will give next 180 days date

select current_date - 180  ---it will give before 180 days date

언급URL : https://stackoverflow.com/questions/10909902/how-to-add-number-of-days-in-postgresql-datetime

반응형