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을
취해야 하는데 좀 간 단한 방법 없을까여?
부탁드립니다.(ㅠㅠ)
> 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;