테스트 사이트 - 개발 중인 베타 버전입니다

mysql 질문입니다.

고수님들 부탁드립니다..^^

어느 한 테이블에서 기간 설정(예, 2009년 10월 1일 ~ 2010년 10월 15일)을 하여 데이타를 추출할려고 합니다.
날짜가 한 필드로 되어있으면 쉽겠는데...
문제는 날짜가 세 필드로 되어있는 겁니다.
예를 들어 test 라는 테이블에 year는 m_year, month는 m_month, day는 m_day 이런식입니다.

이러한 경우 2009년 10월 1일 ~ 2010년 10월 15일까지 데이타를 추출하는 sql문을 어떻게 써야할지
고수님들께 부탁드립니다....

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 4개

select * from test where
year in ('2009', '2010')
and (year <> '2009' OR month in ('10', '11', '12'))
and (year <> '2010' OR month not in ('11', '12'))
and (year <> '2010' OR month <> '10' OR day in ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'));


이렇게 하시면 됩니다 ㅎㅎ
다른 방법으로는 CONCAT 함수로 m_year, m_month, m_day를 붙여서 검색해도 되구요.

참고로 위에껀 인덱스를 타지만 concat함수를 쓰면 안탑니다.
답변 감사드립니다...
조금더 간략한 방법은 없는지요?
기간 설정하는 날짜를 변수를 받아와서 해야 하거든요...
고수님의 답변 부탁드립니다.^^
날짜가 정확히 어떻게 들어가는지를 모르겠네요.

1월이면 01로 들어가는지 1로 들어가는지...

01로 들어간다는 가정하에 말씀드릴게요. (1로 들어가면 좀더 복잡해 집니다.)

select * from test where concat(year, month, day) >= '20091001' and concat(year, month, day) <= '20101015';
정말로 감사드립니다..^^
고수님 덕분에...한방에 해결되었네요....
행복한 주말보내세요...
감사합니다.

게시글 목록

번호 제목
284508
284499
284492
284490
284484
284481
284478
284476
284474
284472
284470
284458
284457
284454
284453
284447
284446
284444
284441
284440