먼저 이렇게 좋은 사이트를 운영하시는 운영자 모든 분들께 깊은 감사의 인사를 드립니다. 오라클 클럽에서 퀴즈로 나온건데, 포스트그레에서 어떻게 하면 되는지 감을 못잡겠네요... 지금 프로젝트에서 좀 시간이 있어서 공부하고 있는데, 많은 분들의 조언 부탁드립니다. 감사합니다.
달력의 출력 양식을 이야기 하셔야할 것 같네요.
html 테이블을 모양인지,
unix cal 명령어 모양인지,
아니면 우리은행 다이어리 모양인지 ^^
generate_series 를 이용하여 만들어 봤습니다.
함수로 만들어서 사용하셔도좋을거 같습니다.
대충 테스트 해보니 잘 되는거 같아 보여서 올려 봅니다.
(참고: generate_series() 가 동작하는 버젼에서 사용가능합니다.)
prepare calendar (int) as
select
min(case date when 1 then lvl end) as "일",
min(case date when 2 then lvl end) as "월",
min(case date when 3 then lvl end) as "화",
min(case date when 4 then lvl end) as "수",
min(case date when 5 then lvl end) as "목",
min(case date when 6 then lvl end) as "금",
min(case date when 7 then lvl end) as "토"
from (
lvl,
to_char(to_date($1, 'YYYYMM') + lvl - 1, 'D') as date,
trunc((to_char(to_date($1, 'YYYYMM'), 'D')::int + lvl - 2) / 7) as week
from generate_series(1,31) as lvl
where lvl <= to_char(to_date($1, 'YYYYMM') + interval '1 month' - interval '1 day', 'DD')::int
) t
group by week order by week;
execute calendar (200703);
일 | 월 | 화 | 수 | 목 | 금 | 토
----+----+----+----+----+----+----
| | | | 1 | 2 | 3
4 | 5 | 6 | 7 | 8 | 9 | 10
11 | 12 | 13 | 14 | 15 | 16 | 17
18 | 19 | 20 | 21 | 22 | 23 | 24
25 | 26 | 27 | 28 | 29 | 30 | 31
(5 rows)
대충 이런 식으로 나오는군요..
답변주셔서 정말 감사합니다. 포스트그레도 정말 배울게 아직 너무 많군요...!!!