Q&A

  • db에서 년/월/일로 검색을 하고 싶은대 어떻게????
델 왕초보입니당..가르쳐 주시면 감사하겠읍니다.

다름이 아니라...

db화일에서 년/월/일로 검색을 하고 싶은데 영 감히 잡히질 않아서 올립니당...







2  COMMENTS
  • Profile
    양상철 2000.09.26 18:35
    질문이 좀더 자세했으면 하네요...어떤DB인지...

    뭐..오라클은 방기남님의 답변이 있었구....

    제 생각인데...파라독스를 사용하실것 같은데..맞나여?

    저도 첨에 파라독스 사용하면서 날짜검색땜시 버벅거렸걸랑여....



    sql문장에서 직접 문자열(조건)을 넣을려구 고생하지 마시고...(왜?안되니까..)

    파라미터를 이용하세요....

    파라독스라면...이점만 아시면 될듯...





    With Query1 do begin

    Close;

    Sql.Clear;

    Sql.Add(' Select * from Temp');

    Sql.Add(' Where WorkDate >= :FRDT and WorkDate <= :TODT');

    ParamByName('FRDT').AsDate := Now-7;

    ParamByName('TODT').AsDate := Now;

    Open;

    end;



    이렇게 하면...1주일 전부터 오늘까지를 검색하게 됩니다..



    참고로...

    CAST( 날짜필드 AS CHAR(10))이렇게하면 날짜필드가 문자필드로 되구요..

    근데 2000년08월05일 이라면..변환값이...2000-8-5

    2000년08월15일 이라면..변환값이...2000-8-15

    2000년10월15일 이라면..변환값이...2000-10-15

    이런식으로 반환되요...

    그래서..날짜를 SubString( 문자필드 FROM 1 FOR 10 )을 사용해서

    정확히 날짜를 끊어읽어 검색하는것은...SQL에서는 거의 불가능한듯..

    년단위는 무조건 앞에서 4자리니까 쉬운데...

    월/일만 가지고..검색하기가 안되더군요...(혹시 아시는 분있슴 저도 갈켜줘요...)





  • Profile
    방기남 2000.09.26 11:10
    안녕하세요.



    가령, WORKDATE 라는 필드에 20000926 이라는 형식으로 날짜가 저장되어 있을 경우

    다음과 같은 방법으로 년, 년+월, 년+월+일 별로 구분하여 데이터를 가져올 수

    있습니다.



    Query1.Close;

    Query1.SQL.Clear;

    Query1.SQL.Add(' SELECT * ');

    Query1.SQL.Add(' FROM TESTDB ');

    Query1.SQL.Add(' WHERE SUBSTR(WORKDATE, 1, 4) = :SQLDATE ');

    Query1.Params[0].Value := Edit1.Text;

    Query1.Open;



    이런 방법인데요.



    입력방식은 년(2000), 년+월(200009), 년+월+일(20000926) 등과 같은 방법으로

    입력하실 수 있습니다.



    SUBSTR(WORKDATE, 1, X) 부분을 보시면 되겠는데요. X 는 날짜의 길이라는 것은

    금방 아실 수 있을겁니다.



    님이 요구한 답변인 것 같은데, 아마 DB 가 다를 것 같아서 적용하실 수 있을지는

    모르겠네요. 암튼, 즐코하세요.