Q&A

  • DateTime 연산방법??
with Query1 do

begin

Close;

Sql.Clear;

sQryStr := 'SELECT TO_CHAR(SYSDATE,''YYYYMMDDHH24MISS'') NOWDATE FROM DUAL';

Sql.Add(sQryStr);

Open;

sDateStr := FieldByName('NOWDATE').AsString;

Close;

end;



요렇게 system 날짜와시간을 받았습니다.

그런데 DB에도 날짜와시간을 가지고 있는 칼럼이 있습니다.

DB의 것을 Select한후 둘을 비교를 해야되거덩여

음~~

시스템에서 받은 시간이 DB에 들어 있는 시간보다 1시간 30분이 클때 어떤 Action을

취해야 하는데 좀 간 단한 방법 없을까여?

부탁드립니다.(ㅠㅠ)



1  COMMENTS
  • Profile
    홍성락 2001.11.09 05:25
    꼴통 wrote:

    > with Query1 do

    > begin

    > Close;

    > Sql.Clear;

    > sQryStr := 'SELECT TO_CHAR(SYSDATE,''YYYYMMDDHH24MISS'') NOWDATE FROM DUAL';

    > Sql.Add(sQryStr);

    > Open;

    > sDateStr := FieldByName('NOWDATE').AsString;

    > Close;

    > end;

    >

    > 요렇게 system 날짜와시간을 받았습니다.

    > 그런데 DB에도 날짜와시간을 가지고 있는 칼럼이 있습니다.

    > DB의 것을 Select한후 둘을 비교를 해야되거덩여

    > 음~~

    > 시스템에서 받은 시간이 DB에 들어 있는 시간보다 1시간 30분이 클때 어떤 Action을

    > 취해야 하는데 좀 간 단한 방법 없을까여?

    > 부탁드립니다.(ㅠㅠ)

    ///////////////////////////////////////////////////////

    아래것을 찹조하세요.

    SystemDateTime는 시스템시간에 1시간 30분을 더한거구요

    DB의 것을 Select한후 구한것은 아래에서 HTime2를 뺀 DataDateTime를구해

    if SystemDateTime <= DataDateTime then으로 하시면 됩니다.

    간단하게 함수 몇개로도 할수있지만

    이렇게 복잡하게한건 각시스템의 국가별선정값의 영향을 안받게 하려고 했습니다.



    var

    HYear, HMonth, HDay, Hour, Min, Sec, MSec: Word;

    HDate, HTime,HTime2, SystemDateTime, DataDateTime: TDateTime;

    str : string;

    begin

    str := '20011108124011';

    HYear := StrToint(copy(str,1,4));

    HMonth:= StrToint(copy(str,5,2));

    HDay := StrToint(copy(str,7,2));

    HDate := EncodeDate(HYear, HMonth, HDay);



    Hour:= StrToint(copy(str,9,2));

    Min := StrToint(copy(str,11,2));

    Sec := StrToint(copy(str,13,2));

    MSec:= 0;

    HTime := EncodeTime(Hour, Min, Sec, MSec);

    HTime2 := EncodeTime(1,30,0,0); //1시간 30분경과

    SystemDateTime := HDate+HTime+HTime2;

    //Edit9.Text := FormatDateTime('YYYYMMDDHH24MISS', SystemDateTime);



    ..........



    end;