오라클에서는 달력일자를 가져오는 쿼리를 구현할 때 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 |
댓글