본문 바로가기
서버/DB

postgresql에서 connect by 를 써보기.

by 아카이sun 2020. 4. 6.

오라클에서는 달력일자를 가져오는 쿼리를 구현할 때 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일을 빼주게되면 해당월의 마지막 일을 구할 수 있습니다.

 

오라클보다는 조금 더 복잡한 쿼리긴 하지만 유용하게 쓸수 있을 것 같습니다.

'서버 > DB' 카테고리의 다른 글

postgresql에서 auto increment 설정(자동 index증가)  (2) 2020.06.29
mysql 접속이 느려졌을 때 대처방안.  (2) 2020.06.25
오라클 날짜 관련  (2) 2019.02.27
오라클 random함수 사용하기  (2) 2018.11.29
mysql group by error  (2) 2018.09.21

댓글