서버/DB
postgresql에서 connect by 를 써보기.
아카이sun
2020. 4. 6. 18:09
오라클에서는 달력일자를 가져오는 쿼리를 구현할 때 connect by를 쓰면 쉽게 원하는 결과를 출력할 수 있습니다.
select
to_char(trunc(current_date, 'MM') + LEVEL -1, 'yyyy-MM-dd')
from dual
connect by level <= to_char(last_day(current_date), 'dd')
하지만 postgresql에서는 connect by를 지원하지 않습니다.
대신 generate_series라는 함수를 이용해서 동일한 결과를 출력할 수 있습니다.
select
generate_series(
date_trunc('month',current_date), //시작일
date_trunc('MONTH', current_date) + INTERVAL '1 MONTH - 1 day', '1 day'::interval //종료일
)::date as ymd
또한 last_day를 지원하지 않기 때문에 현재월을 뽑고 한달을 더해준 뒤 다시 1일을 빼주게되면 해당월의 마지막 일을 구할 수 있습니다.
오라클보다는 조금 더 복잡한 쿼리긴 하지만 유용하게 쓸수 있을 것 같습니다.