오라클 간단한 날짜쿼리문질문입니다.~확인만해주세요

오라클 간단한 날짜쿼리문질문입니다.~확인만해주세요

작성일 2009.10.23댓글 1건
    게시물 수정 , 삭제는 로그인 필요

jsp로 웹구현중에 질문입니다.

 

if(month.equals("1월"){

sql = "select count(*) from ticket where " +
         "regdate>=to_date('2009'||'-01-01','YYYY-MM-DD') " +
         "and regdate <= to_date('2009'||'-01-31','YYYY-MM-DD')";

풀어쓴것 : select count(*) from ticket where  regdate>=to_date('2009'||'-01-01','YYYY-MM-DD') and regdate <= to_date('2009'||'-01-31','YYYY-MM-DD');

월을 입력받아 그월에 해당하는 데이터 글수를 받아오는겁니다. 1월을 입력했기때문에

1월의 글개수를 받아옵니다.

regdate = sysdate 로 입력했습니다 .타입은 Date 입니다.

요런 쿼리문이있습니다.

실행하면 동작은합니다 궁금한점이

regdate>=2009년 1월 1일    //    regdate<=2009년 1월 31일 이런조건인데

이게 1월 1일 ~ 1월 31일 사이의 조건을 만족하는지 궁금합니다. 2월이나 12월이

포함되면 안되니깐요 ~~ sysdate형식이라 일일이 넣어보기가

힘들어서요 ㅎ~ 부탁드립니다.

 

 



profile_image 익명 작성일 -

결론 부터 말하자면 됩니다.

 

date type은 +,-도 알아서 계산 해줍니다.

예로 2009-01-01에 -1하면 2008-12-막날

로 되기 때문에 스트링을 date type으로 변경 하여 계산하는방법은

됩니다..

 

그러나 date type 으로  비교 할때 시분초까지 정확하게 비교 한다는게

조금 까다롭습니다.

 

스트링 2009년 1월 1일을 date type으로 바꾸면 2009-01-31 00:00:00...으로

바뀌게 되고 비교 날짜가 시간이 들어 있는 2009-01-31 10:00:00이라면 저기

포함되느냐 이런 문제도 발생합니다. 24시간으로 보면 0시는 그날의 시작시간

임으로 31일 새벽0시 일것입니다. 솔직히 0시가 31일의 어느 시간을 포함하는지는

정확히 해보지 않았으나 경험상 ....

 

어쨋든 시간 까지 따지는  것은 맞습니다. 차라리 프로그램에서 들어오는 스트링

일자를 그대로 쓰고 regdate를 to_char로 바꾸는것이 일로 계산하기 쉽습니다.

물론 문자열 비교 연산도 님이 생각 하는 의도대로 01일부터 31까지 검색을 할것입니다.

 

select count(*)
  from ticket
  where to_char(regdate,'YYYYMMDD') >= '2009'||'0101'
    and to_char(regdate,'YYYYMMDD')  <= '2009'||'0131';

또는

select count(*)
  from ticket
  where to_char(regdate,'YYYYMMDD') between '2009'||'0101' and '2009'||'0131';

 

혹시 염려 하시는 문자형 숫자의 크기 비교에서 2가 10보다 크다는 문제는 발생하지

않을 것입니다. 8자리가 정해져 있기 때문입니다.

 

ticket의 data량이 많아 속도가 늦어 진다면 차라리 몇년치의 일자 table을

만들어 in 조건을 거는 것이 좋습니다. 이것은 범위 스캔할때 불특정 범위를

적용 하는데 걸리는 옵티마이져의 계산방법을 좋게 합니다.

물론 대량의 data라는 것은 몇만건, 몇천만건의 data 누적 량이 예상 되는

크기를 말합니다.

 

select count(*)
  from ticket
  where to_char(regdate,'YYYYMMDD')  in (

select date

from date_t

where date like '200901%'

)

 

그럼 수고 하세용..

오라클 쿼리 질문입니다..

... 수 날짜 확인 ======================== 철수 50 50 50 3.1 null 철수 50 50 50 4.1 null 철수... 간단한거 같아두 실제로 쓰는건 조인 테이블이 10개정도 됩니다 ㅠㅠ 테이블...

중국어 긴거 해석 해주세요 길어요....

... ERP - 오라클 시스템 재료 의 메인 인터페이스 인스턴스의 중국 쿼리 / 사후 분석 3의 물자 부족과 예방 조치 여덟 가지 이유 칠가지 4의 물자 / 수신 / 위 / 반품 확인...

컴퓨터용어!!!50개정도 알아야되요!!...

... 간단한 용어 50개 정도만 이라도 괜찮아요~ 해설도 같이 있어야 되요!!ㅜㅠ 부탁할께요!!ㅠㅠ 빨리해주세요!!... 서비스에서는 쿼리 내의 관계를 지정하는 단어나...

컴퓨터분야직업

... ( 그래도 채택은 해주세요...ㅠㅠ ) 그리고... 정말 간단한 것들은 만듭니다. 그렇지만 복잡하고 어려운 일을... MS 나 오라클 등에서 돈 백만원주고 자격증을 얻어야 돈 좀...

날자관련 크기 알아내기

... 싶어요 쿼리가 맞는지 확인해주세요... 뿌려주시고 날짜연산(조건연산 등) 하실경우에는 1번째걸로 하시면됩니다. MKTime 간단한 예) $Now...