Q&A

  • 시간을 기준으로 검색을 하려고 하는데... !_!
시간을 이용한 검색을 하려고 하거든요...



몇시부터 몇시 사이에... 일어난 트랜잭션을 보여 주라... 뭐 이런거...



테이블 내에 시간을 저장하고 있는 필드 이름은 REQRECVHMS 이고, char형식으로



hhmmss로 저장되어 있습니다.



이걸 검색하기 위한 쿼리문으로...



with DataMod.QryLog do

begin

...

SQL.Add('and (REQRECVHMS between :btime and :etime)');

...

procedure TF_TranStat.BtnViewClick(Sender: TObject);

...

try

DataMod.QryLog.ParamByName('bTime').AsString := Timebegin.EditText;

except

DataMod.QryLog.ParamByName('bTime').AsString := '000000';

end;

try

DataMod.QryLog.ParamByName('eTime').AsString := Timeend.EditText;

except

DataMod.QryLog.ParamByName('eTime').AsString := '235959';

end;

....



일케 코딩을 해 봤거든요...



시간을 입력 받는 Timebegin과 Timeend는 EditMaskBox이구요...



그런데 문제는...



시작시간은 제대로 검색이 되는데... 끝나는 시간은 시간 + 1시간 이렇게 검색이 되는 거랍니다...!_!



9시 부터 10시까지 발생된 데이터를 조사하라... 라고[09:00:00 - 10:00:00]



일케 입력을 했는데...



검색되어 온 값은 09:00:00부터 11:00:00시에 일어난 데이타를 찾아 온다는 것이죠...



제 코딩에 문제가 있는 건가요?



참고로 데이타 베이스는 오라클8을 쓰고 있답니다...



도와주세요...!_!





날씨가 많이 따뜻해 졌네요...^^



어제 비가 와서 하늘도 깨끗해 졌구요...



이눔의 프로그램만 말썽을 안부린다면...



참 행복한 오후가 될것 같은데...=_=



여러분들은 행복한 오후 보내세요...^^

1  COMMENTS
  • Profile
    김주석 1999.12.10 01:38
    김매경 wrote:

    > 시간을 이용한 검색을 하려고 하거든요...

    >

    > 몇시부터 몇시 사이에... 일어난 트랜잭션을 보여 주라... 뭐 이런거...

    >

    > 테이블 내에 시간을 저장하고 있는 필드 이름은 REQRECVHMS 이고, char형식으로

    >

    > hhmmss로 저장되어 있습니다.

    >

    > 이걸 검색하기 위한 쿼리문으로...

    >

    > ....

    >

    > 일케 코딩을 해 봤거든요...> with DataMod.QryLog do

    > begin

    > ...

    > SQL.Add('and (REQRECVHMS between :btime and :etime)');

    > ...

    > procedure TF_TranStat.BtnViewClick(Sender: TObject);

    > ...

    > try

    > DataMod.QryLog.ParamByName('bTime').AsString := Timebegin.EditText;

    > except

    > DataMod.QryLog.ParamByName('bTime').AsString := '000000';

    > end;

    > try

    > DataMod.QryLog.ParamByName('eTime').AsString := Timeend.EditText;

    > except

    > DataMod.QryLog.ParamByName('eTime').AsString := '235959';

    > end;



    >

    > 시간을 입력 받는 Timebegin과 Timeend는 EditMaskBox이구요...

    >

    > 그런데 문제는...

    >

    > 시작시간은 제대로 검색이 되는데... 끝나는 시간은 시간 + 1시간 이렇게 검색이 되는 거랍니다...!_!

    >

    > 9시 부터 10시까지 발생된 데이터를 조사하라... 라고[09:00:00 - 10:00:00]

    >

    > 일케 입력을 했는데...

    >

    > 검색되어 온 값은 09:00:00부터 11:00:00시에 일어난 데이타를 찾아 온다는 것이죠...

    >

    > 제 코딩에 문제가 있는 건가요?

    >

    > 참고로 데이타 베이스는 오라클8을 쓰고 있답니다...

    >

    > 도와주세요...!_!

    >

    >

    > 날씨가 많이 따뜻해 졌네요...^^

    >

    > 어제 비가 와서 하늘도 깨끗해 졌구요...

    >

    > 이눔의 프로그램만 말썽을 안부린다면...

    >

    > 참 행복한 오후가 될것 같은데...=_=

    >

    > 여러분들은 행복한 오후 보내세요...^^





    > with DataMod.QryLog do

    > begin

    > ...

    > SQL.Add('and (REQRECVHMS between :btime and :etime)');

    > ...

    > procedure TF_TranStat.BtnViewClick(Sender: TObject);

    > ...

    > try

    > DataMod.QryLog.ParamByName('bTime').AsString := Timebegin.EditText;

    > except

    > DataMod.QryLog.ParamByName('bTime').AsString := '000000';

    > end;

    > try

    > DataMod.QryLog.ParamByName('eTime').AsString := Timeend.EditText;

    > except

    > DataMod.QryLog.ParamByName('eTime').AsString := '235959';

    > end;

    ** between 은 between 시간1 and 시간2

    ** 라고 해야 제대로 된 값이 나올 수 있으리라 생각됩니다.

    ** 직접 해보지는 않았지만 아마도 다음 코드를 보시면 도움이 되지 않을까 싶네요



    qry_opr_evnt_p3.Active := False ;

    qry_opr_evnt_p3.SQL[20] :=

    ' AND (TO_DATE(A.USE_DT) BETWEEN ' + ':pa_f_date AND :pa_t_date )' ;

    qry_opr_evnt_p3.ParamByName('pa_f_date').AsDate :=

    dtp_date_from_p3.Date ;

    qry_opr_evnt_p3.ParamByName('pa_t_date').AsDate :=

    dtp_date_to_p3.Date ;

    qry_opr_evnt_p3.Active := True ;



    > SQL.Add('and (REQRECVHMS between :btime and :etime)');

    REQRECVHMS가 문자포맷이라면 to_date(REQRECVHMS) 으로 하면 될것 같구요

    > DataMod.QryLog.ParamByName('bTime').AsString := Timebegin.EditText;

    DataMod.QryLog.ParamByName('bTime').AsDate := StrToDate(Timebegin.EditText);

    하면 되지 않을까 싶네요..