okky1922
267
2019-05-16 15:26:43
9
847

Mysql 질문


Mysql 을 사용하고 있는데 

프로시저에서 말고 일반 SELECT 문에서도 FOR문을 사용할수 있는건가요??

start = "2019-05-10"

end = "2019-05-16"

이렇게 값을 두개 가져오면

SELECT 조회 결과

2019-05-10

2019-05-11

2019-05-12

.

.

.

2019-05-16


이렇게 조회가 되도록 하고싶은데 방법이 있을까요?

0
  • 답변 9

  • 잘모르겠고
    158
    2019-05-16 15:29:46

    between으로 되지않나요?

  • okky1922
    267
    2019-05-16 15:32:53

    잘모르겠고 between 은 WHERE 조건 절에 써야 되는거아닌가요??


    따로 저렇게 저장되어있는 데이터는 없고 만들려고 하고있습니다

  • 캐릭터그림신
    223
    2019-05-16 15:45:01 작성 2019-05-16 15:45:36 수정됨

    저도 통계쪽 날짜를 무조건 보여줘야 하는 페이지가 있어 귀찮아서 날짜만 dummy테이블을 만들어 사용하도록 했습니다만..ㅋㅋ;

    select 문으로는 어려울 것 같고..프로시져 생성해서 날짜만큼 돌려 붙이시는게 낫지 않을까 싶네요.

  • allgive2you
    3k
    2019-05-16 15:48:22

    Oracle의 경우 connect by 가 가능하니 mysql도 있을거에요.

    connect by 로 검색해보세요.

  • odyssey320
    789
    2019-05-16 15:49:41

    generate series in mysql 검색해보세요.

    근데 mysql에서는 마땅히 참조할만한게 없긴하네요.

  • 캐릭터그림신
    223
    2019-05-16 15:51:36

    아항..그러고 보니 저도 dummy 테이블 넣을때 이런저런 사이트 참조해서 넣었었네요..ㅋㅋ;


    http://chomookun.blogspot.com/2018/02/mysql-dummy.html


    요런데 참고가 되실듯

      select  dt.yyyymmdd

    from    (

            select      curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as yyyymmdd

                        ,a.a as aa

                        ,b.a as ba

                        ,c.a as ca

            from        (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a

            cross join  (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b

            cross join  (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c

            ) dt

    where dt.yyyymmdd between '2019-05-10' and '2019-05-15'

  • 캐릭터그림신
    223
    2019-05-16 15:52:42

    SELECT DT.YYYYMMDD

      FROM (SELECT STR_TO_DATE('20170914', '%Y%m%d') - INTERVAL(A.A + (10 * B.A) + (100 * C.A)) DAY AS YYYYMMDD

                -- SELECT DATE_ADD(STR_TO_DATE('20170914', '%Y%m%d'), INTERVAL -(A.A + (10 * B.A) + (100 * C.A)) DAY) YYYYMMDD

                 , A.A AS AA

                 , B.A AS BA

                 , C.A AS CA

              FROM (SELECT 0 AS A UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS A

             CROSS JOIN (SELECT 0 AS A UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS B

             CROSS JOIN (SELECT 0 AS A UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS C

            ) DT

     WHERE DT.YYYYMMDD BETWEEN '20170801' AND '20170914'; 

  • okky1922
    267
    2019-05-16 16:12:34

    캐릭터그림신 감사합니다 쿼리문 한번 분석해서 시도 해보도록 하겠습니다~

  • okky1922
    267
    2019-05-16 16:13:54

    allgive2you 아하 처음보는건데 찾아보도록 할께요~


    odyssey320 넵 검색해보니 거의 프로시저를 이용한거고 딱히 자료가 많이 안나와서 질문드렸습니다 ㅠ

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