예를 들어서
2003년 24째 주가 시작되는 날짜와 끝나는 날짜를 구하려고 합니다.
주별 통계를 내려고 하거든요.
x번째주 2003/04/01 ~ 2003/04/05
x번째주 2003/04/06 ~ 2003/04/12
x번째주 2003/04/13 ~ 2003/04/19
이런식으로 출력하려고 합니다.
해당 날짜가 몇주에 속하는지 알아내는 함수는 찾았는데
주의 시작 날짜와 끝 날짜를 찾는 함수는 찾을 수가 없군요.
PostgreSQL에서는 날짜형에 대해서 + - 연산이 가능합니다.
아래 함수는 옛날에 필요해서 만들어둔것인데,
아마 7.3.x 대에서는 timestamp 값에 대해서는 오른쪽 값이 interval 형일 경우에만 이 +, - 연산이 가능한지라, 일단 date형으로 형변환 하셔서 사용하셔야할겝니다.
* 특정날의 해당 주간에 있는 일요일을 구하는 함수
CREATE OR REPLACE FUNCTION "sunday" (date ) RETURNS date AS '
select $1 - to_char($1,''D'')::int + 1
' LANGUAGE 'SQL';
* 특정날의 해당 주간에 있는 토요일 구하는 함수
sunday + 6 하면 되겠지요.
* 특정 년도 몇번째 주간의 일요일 구하는 함수
CREATE OR REPLACE FUNCTION wwtosunday(int, int) RETURNS date AS '
select sunday(to_date(text($1) || ''-01-01'',''YYYY-MM-DD'') + (7 * ($2 - 1))) as sunday
' language 'SQL';