Hirct
157
2020-03-30 14:36:36
8
1044

mysql에서 이번주(일~토) 사이에 값을 가져오고 싶은데 어떻게 해야할지 모르겠습니다


mysql에서 이번주(일~토) 사이에 값을 구해오는 것을 찾고 있는데 아무리 찾아 보아도 모르겠어서 

제발 도와주세요 ... ㅠ

0
  • 답변 8

  • 서버에도시락쏟음
    2020-03-30 14:47:01

    안녕하세요 질문을 너무 애매하게 작성하셨습니다.

    우선 컬럼 타입이 DATETIME인지 TIMESTAMP인지 말씀해주셔야 할 것 같고

    정확한 조건이 해당 날짜 이내 밖에 없는지 아니면 추가적인 조건이나 세부 시간이 더 들어가야 하는지도 말씀해주셔야 하고

    이번 주 일~토 보단 날짜로 말씀해주시는게 답변 드리기 편할 것 같습니다.

  • Hirct
    157
    2020-03-30 14:57:02

    컬럼타입은 datetime입니다 

    제가 궁금했던것은 3-30일을 기준으로 이번주(3.29~4.4) 안에 작성되어 있는 값들을 카운트 하고싶은것이었습니다 다음주가 되면 (4.5~4.11) 안에 작성되어 있는 값들을 카운트가 가능하게 하고싶은것이었습니다

  • redeye0922
    1k
    2020-03-30 14:58:01

    SELECT
     ADDDATE( now(), - WEEKDAY(now()) + 0 ) AS MONDAY,
     ADDDATE( now(), - WEEKDAY(now()) + 1 ) AS TUESDAY,
     ADDDATE( now(), - WEEKDAY(now()) + 2 ) AS WEDNESDAY,
     ADDDATE( now(), - WEEKDAY(now()) + 3 ) AS THURSDAY,
      ADDDATE( now(), - WEEKDAY(now()) + 4 ) AS FRIDAY,
     ADDDATE( now(), - WEEKDAY(now()) + 5 ) AS SATURDAY,
     ADDDATE( now(), - WEEKDAY(now()) + 6 ) AS SUNDAY
    FROM DUAL;


    saturday, sunday만 쓰면되겠죠

  • Hirct
    157
    2020-03-30 15:02:45

    그 날짜 사이에 있는 db값을 가져오고 싶은거였는데 그거는 힘든가요..?

  • redeye0922
    1k
    2020-03-30 15:05:18 작성 2020-03-30 15:07:14 수정됨

    between A and B에 A에는 토요일 값 B에 일요일값 넣으면 되겠네요

    검색조건으로

    무슨테이블에 데이터가 있는지 모르겠지만


    select * from 테이블 where 기준값  between  ADDDATE( now(), - WEEKDAY(now()) + 5 )

    and  ADDDATE( now(), - WEEKDAY(now()) + 6 );

    이러면 대충 나오겟죠?

    날짜가 말그대로 date형이냐 timestamp형이냐 에따라서 fomat은 또 다르게 변경해주면돼겠지만


    답변은 드렸지만...

    본인만 알수있는 질문을 하면 못알아먹어요

    답하는 입장에서 DB를 보고있는것도아니고

  • Hirct
    157
    2020-03-30 15:09:06

    select count(*) from visitant_count where between ADDDATE( now(), - weekday(now()) +0)

    and ADDDATE( now()) + 6); 이렇게는 했는데 기준값하고 format이 무엇인지 모르겠습니다 ㅠㅠ 

    쿼리문 날린지는 얼마 안되서 /.. 번거롭게해서 죄송합니다 datetime이긴.합니다

  • redeye0922
    1k
    2020-03-30 15:15:59

    질문의 요지는  visitant_count 테이블에서 이번주 토요일, 일요일 인 데이터만 검색하는것인가요???

    그럼 질문을할때  visitant_count 의 컬럼정보정도는 제공을해주셔야 쿼리를짜겠죠

    아무튼 기준값이란건 말그대로 그 테이블에있는 컬럼중에 토,일요일 인 데이터 를 뽑기위해

    날짜가 들어가있는 컬럼을 의미하겠네요

    그 컬럼이 이번주 토요일과 일요일사이에 존재하냐 라고 질의를 던저야 쿼리결과가 나오겠죠??

    그리고  ADDDATE( now()) + 6) <== 왜 이렇게 넣으신건지 모르겠네요?

    datetime이라면 어쨋든 timestamp겠네요

    시분초까지 따져야하는것이면 mysql date_format 함수 통해서 포멧에 맞게 값변경해서 비교하시면 된다는겁니다.

    하는방법은 다 제시해 드렸어요

    직접 떠먹으셔야지 답을알려주세요는 아닌것같네요

  • Hirct
    157
    2020-03-30 15:25:02

    select count(*) from visitant_count where visit_date between adddate(curdate(), - weekday(curdate()) + 0 ) and adddate(curdate(), - weekday(curdate()) + 6);

    저같은 경우는 저장도 curdate값으로 해서 curdate값으로 비교하니깐 정상적인 값이 출력 됬습니다

    알려주셔서 감사합니다 덕분에 잘 해결한거 같습니다 

  • 로그인을 하시면 답변을 등록할 수 있습니다.