개발/DB

Postgres / 달력뽑기

코인아님 2023. 12. 8. 20:31

일단 이번달의 달력을 뽑아보도록 하겠다

SELECT generate_series(
    date_trunc('MONTH', NOW()::DATE),
    date_trunc('MONTH', (NOW()::DATE + interval '1 MONTH')) - INTERVAL '1 DAY',
    interval '1 DAY'
)::DATE AS monthly_date;

 

 

> 설명

 generate_series('시작' , '끝', '증감')

자바의 for문이라고 생각하변 편함. 시작~끝까지 일정한 간격으로 증가시키거나 감소시킬 수 있다.

 

date_trunc('자를단위', '기준 날짜')

DATE_TRUNC('DAY', NOW())를 하면 오늘 날짜가 2023.12.08이기때문에 2023.12.08로 값이 나오게된다.

DATE_TRUNC('MONTH', NOW()) 를 하면 오늘 날짜가 2023.12.08이기때문에 2023.12로 값이 나오게된다.

때문에  DATE_TRUNC('MONTH', NOW()) 에서 2023.12까지 잘린 친구에 ::DATE로 형변환해주면 자동으로 '-01'이 붙어서 1일부터 시작시킬 수 있게 된다.

 

date_trunc('MONTH', (NOW()::DATE + interval '1 MONTH')) - INTERVAL '1 DAY'

은 이달의 마지막날을 구하는 방법이다. 간단하게 2023.12-01월에서 1달 더한 2023-01-01에서 -1DAY하면 당연히 이번달의 마지막 날이 나오게된다.

 

 

 

반응형