편법이긴 하지만 충분히 많은 숫자의 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에 따라 약간 씩 달라질 수 있구요.
편법이지만
편법이긴 하지만 충분히 많은 숫자의 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에 따라 약간 씩 달라질 수 있구요.
아무리 봐도 너무 꽁수인거 같은데 더 좋은 방법있으면 꼭 알려주시기 바랍니다 )
만약에 현재 DB에 들어있는 데이터 중에서만 뽑아내는 것이라면, 단순히
만약에 현재 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 ^^ --- 고운 하루
=========================
댓글 달기