Q&A

  • oracle에서 년 ,월,일을 따로가져올수있나여 부탁,,,.
ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from efashion_i where brand=:B and ~~~~~~~~~~~~~~~~~');
    ADOQuery1.Parameters.ParamByName('B').Value := brand;
    ADOQuery1.Open;
      등등
     오라클테이블에 년,월,일을 varchar2타입이고 3개칼럼으로 되어있습니다
     문제는 brand 명 별로 그때에매출을 select 해와야기때문에 where 조건에서 칼럼year,month,day와 현재시스템 년,월,일을 각각 같을경우만 뽑아야돼는데 where 조건문에서 어케해줘야하나여,,,,
부탁드립니다..
답답하구 허걱~~!!!!!!  

    
3  COMMENTS
  • Profile
    김진국 2003.06.11 18:57

    방법은 여러가진것 같군요.
    아래 내용보면 년,월,일은 따로 저장하시는데, 이렇게 하면 넘 힘듭니다.
    년,월,일을 date type을 쓰시면 될걸 넘 어렵게 하시네요..^^

    말씀처럼 3개 칼럼으로 되어있다면,  where 절에 year=formatdatetime('yyyy',now) ,그리고 각각 'mm'.'dd'하시면 될것 같네요.

    혹시나 싶어 아래 sql에 넣어보면,
    ADOQuery1.Close;
       ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('select * from efashion_i where (brand=:B) and  
    (year='''+formatdatetime('yyyy',now)+''') and (month='''+formatdatetime('mm',now)+''') and (year='''+formatdatetime('dd',now)+''') ');  ADOQuery1.Parameters.ParamByName('B').Value := brand;
      ADOQuery1.Open

    이렇게 하시면 될것 같네요...! 근데, 말씀하는 요지에 맞을런지..
    수고하세요.


  • Profile
    따시기 2003.06.11 20:16
    답변해주신 방법도 맞는 방법인거 같은데 저의 의견을 몇자적어 봅니다.
    formatdatetime('yyyy',now) 는 pc의 날짜를 갖고 오는 겁니다.
    데이터베이스 서버의 날짜를 갖고 올려면 오라클의 sysdate를 사용하시면 됩니다.

    select * from efashion_i
    where brand = :B
         and 년 = to_char(sysdate,'yyyy')
         and 월 = to_char(sysdate,'mm')
         and 일 = to_char(sysdate,'dd')

    이렇게 하심 현재서버의 날짜를 조회 하실수 있습니다.
    그리고, 이경우에 date type을 사용하시면 index를 전혀 사용하실수가
    없습니다. date type은 1/1000 초까지를 관리하기때문에 이컬럼을
    다시 변형을 해서 날짜로 바꾸어야 되죠...
    그럼, 컬럼의 변형이 일어나서 index자체가 깨어지기때문에
    나중에 속도에 지대한 악영향을 미칠수 있습니다.
    그럼, 도움이 되셨길 바라며...

  • Profile
    델_!! 2003.06.12 06:26
    ////////////////////////////////////////////////////////////////
    친절한답변감사하구여 오늘 성공했어요 추카해주세요 즐건하루되시구
    꾸뻑!!!~~~~~~~~~
    //////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////