SQL에 관한 질문입니다.

tombraid의 이미지

두개의 날짜(2003.01, 2003.05
)를 입력받아서 다음과 같은 결과를 얻고 싶습니다.

result
-------------------
2003.01
2003.02
2003.03
2003.04
2003.05

물론 두날짜는 가변적인 것이구요.

가능할것 같은데 감이 잘 안오네요.. ^^;

clhitter의 이미지

편법이긴 하지만 충분히 많은 숫자의 record를 가지고 있는 T라는 table이 있다면 rownum을 사용하면 가능할 것 같습니다.
또 1900~2100년 사이라는 가정도 필요할 것 같군요;;

SELECT * FROM
(SELECT (Y || '.' || M) AS RESULT FROM
(SELECT TO_CHAR(ROWNUM + 1899) AS Y FROM T
WHERE ROWNUM BETWEEN 1 AND 201),
(SELECT TO_CHAR(ROWNUM, 'FM00') AS M FROM T
WHERE ROWNUM BETWEEN 1 AND 12)
)
WHERE RESULT BETWEEN '2003.01' AND '2003.05';

oracle을 기준으로 작성된 쿼리문입니다.

여기서 rownum이라던지 to_char 함수같은건 DBMS에 따라 약간 씩 달라질 수 있구요.

아무리 봐도 너무 꽁수인거 같은데 더 좋은 방법있으면 꼭 알려주시기 바랍니다 )

charsyam의 이미지

만약에 현재 DB에 들어있는 데이터 중에서만 뽑아내는 것이라면, 단순히

"2002.02.05" 와 "2002.02.06" 같은 형태일 경우는 문자열 비교로도

그 안에 것을 찾아낼 수 있는걸로 압니다. 단 "2002.2.25" 와 "2002.02.25"

는 서로 다른걸로 처리되겠죠.

전자는 간단히 select 어쩌구 where "2002.02.05" <= key and "2002.02.25" <= key 이런식으로 하면 될껍니다.

그럼 고운 하루

=========================
CharSyam ^^ --- 고운 하루
=========================