by 김백산 [SQL Query] PostgreSQL sql postgre [2020.04.17 10:30:34]
case when (7* R.week::int) + R.weekday::int - extract(dow from date_trunc('month', R.generate_date)) :: integer - 6 :: integer >= 1 AND (7* R.week::int) + R.weekday::int - extract(dow from date_trunc('month', R.generate_date)) :: integer - 6 :: int <= extract( day from date_trunc('month', R.generate_date)+'1 month'::interval-'1day'::interval) :: int then (DATE_TRUNC('month', R.generate_date))::DATE + ((7*R.week :: int) + R.weekday::int - extract(dow from date_trunc('month', R.generate_date)) :: integer - 7) :: int
week = 주, weekday = 요일 인덱스 , generate_date = 2019-03-05 같은 날짜
현재 전년도의 요일 기준으로 매년 반복해서 같은 주, 같은 요일에 데이터를 생성하고있는데 조건이 위와 같습니다.
근데 다음 식이 이해가 안갑니다.. 왜 해당 달의 날짜 + 6을 제외하는지..
식 : (7*주) + 해당요일 인덱스 - 해당 달의 시작날짜 인덱스 - 6
그래서 현재 전년도의 해당 주 , 해당 요일에 반복으로 생성되지만 만약 2018-03-05를 기준으로 할 경우
2019-03 월의 첫번째 월요일은 첫쨰 주에 존재하지않고 둘째 주에 존재해서 생성이 안되는데 조건을
어떻게 바꿔야 할 까요?