mysql month 질문이요 0 2 691

by 사나마나 [MySQL] [2017.09.19 11:32:26]


select date_format(date_sub(ri.receipt_date, interval(dayofweek(ri.receipt_date)-1) day), '%Y%m%d') as start,
date_format(date_sub(ri.receipt_date, interval(dayofweek(ri.receipt_date)-7) day), '%Y%m%d') as end,
date_format(ri.receipt_date, '%U) as 주차
count(ri.receipt_no),
MONTH(ri.receipt_date)
from reception_information ri, product_information pi
where ri.receipt=pi.receipt_no and pi.seq='1' and
ri.receipt_date >='2015-09-01' amd ri.receipt_date <='2015-12-01'
group by date;

이 쿼리를 실행하면

start end 주차 count month
2015/08/30 2015/09/05 35 38 9
2015/09/27 2015/10/03 39 23 9
2015/11/29 2015/12/05 48 60 11

제가 이상한 부분만 표에 낳었습니다.

문제는 제가 선택한 날짜부터 시작이 안되는 점과

8월 30일부터 9월 5일까지가 35주찬데 9월이라 나오는데 11월 29일부터 12월5일까지는 11월로 나오는 부분입니다.

달력으로 확인 했는데 8월30일도 일요일이고 11월29일도 일요일인데 왜 결과가 다른건가요?

이 결과를 하나로 통일을 못하나요?

by 마농 [2017.09.19 11:39:55]

우선 group by 사용법이 잘못 되었습니다.
mysql 에서만 에러가 안나는 구문입니다.
group by 때문에 데이터가 잘못 표시되는게 아닐런지요?
오타도 많네요?


by 주킹 [2017.09.19 13:26:50]

우선 문법이 틀리신건 둘째치고..

현재 start값과 end값으로 그 주를 표시하시는건데

결과가 왜 틀리냐 물어보시는건

로직이 잘못됬다는 겁니다.

예를 들어

8월 30~ 9/5 일인데 실 데이터 9/2일이면

9/27~10/3일이 9/28이면 동일하게 9월로 나오는 것과 같이

실 데이터의 달을 표기한것인데... 이 결과를 통일해달라는건 기준을 명확히

제시하셔야하는 겁니다. 그부분을 남에게 제시해달라고하는는 것은 아닌거 같습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입