Q&A

  • 시간을 계산하는데...
안녕하세여... ^^



DB는 오라클을 쓰구 있구여...



로그테이블 중에 시간이 들어가는 테이블이 있는데...



그 형식은... yyyymmddhhmmss형식으루... char형으로 들어가 있거든여...



제가 하려고 하는것은...



현재의 시간에서 -3초 한 시간 부터... 현재의 시간-3초 -XX초 사이의 시간에



(여기서 xx초는... 3~60사이의 임의의 초랍니다..)



현재의 시간이 070013 이라면...



070000 ~ 070003 사이에 발생한 데이타를 쿼리해 오는...



이런걸 하려고 하거든여...



그런데 시간 계산하는게 너무 복잡해여... =_=



(제가 초보라서 그러는 건지... 머리가 나쁜건지는 몰겠지만;;;)



procedure TForm1.Button1Click(Sender: TObject);

var nowdate : String;

ddd, aaa : integer;

begin

nowdate := FormatDateTime('yyyymmddhhmmss',Now);

ddd := StrToInt(Copy(nowdate,9,2)) * 3600 + StrToInt(Copy(nowdate,11,2)) * 60 +StrToInt(Copy(nowdate,13,2)) ;

aaa := ddd - 3;

label1.Caption := nowdate;

label5.Caption := IntToStr(ddd); // 초로 계산

label2.Caption := IntToStr(aaa); // -3초

label8.Caption := IntToStr((aaa div 3600)) + IntToStr((aaa mod 3600) div 60) + IntToStr((aaa mod 3600) mod 60); //초를 다시 시간으로 환산

end;



일케 해 봤는데...



문제는... 초를 다시 시간으로 환산할때...



그 결과가 7시 라면...



결과 값은 700으로 나오잖아여...



DB에는 070000으로 저장되어있는데...





어떻게 해야 하나여?



좋은 방법 없을까여?



도와 주세여...!_!



1  COMMENTS
  • Profile
    술친구 2000.01.08 19:03
    김매경 wrote:

    > 안녕하세여... ^^

    >

    > DB는 오라클을 쓰구 있구여...

    >

    > 로그테이블 중에 시간이 들어가는 테이블이 있는데...

    >

    > 그 형식은... yyyymmddhhmmss형식으루... char형으로 들어가 있거든여...

    >

    > 제가 하려고 하는것은...

    >

    > 현재의 시간에서 -3초 한 시간 부터... 현재의 시간-3초 -XX초 사이의 시간에

    >

    > (여기서 xx초는... 3~60사이의 임의의 초랍니다..)

    >

    > 현재의 시간이 070013 이라면...

    >

    > 070000 ~ 070003 사이에 발생한 데이타를 쿼리해 오는...

    >

    > 이런걸 하려고 하거든여...

    >

    > 그런데 시간 계산하는게 너무 복잡해여... =_=

    >

    > (제가 초보라서 그러는 건지... 머리가 나쁜건지는 몰겠지만;;;)

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var nowdate : String;

    > ddd, aaa : integer;

    > begin

    > nowdate := FormatDateTime('yyyymmddhhmmss',Now);

    > ddd := StrToInt(Copy(nowdate,9,2)) * 3600 + StrToInt(Copy(nowdate,11,2)) * 60 +StrToInt(Copy(nowdate,13,2)) ;

    > aaa := ddd - 3;

    > label1.Caption := nowdate;

    > label5.Caption := IntToStr(ddd); // 초로 계산

    > label2.Caption := IntToStr(aaa); // -3초

    > label8.Caption := IntToStr((aaa div 3600)) + IntToStr((aaa mod 3600) div 60) + IntToStr((aaa mod 3600) mod 60); //초를 다시 시간으로 환산

    > end;

    >

    > 일케 해 봤는데...

    >

    > 문제는... 초를 다시 시간으로 환산할때...

    >

    > 그 결과가 7시 라면...

    >

    > 결과 값은 700으로 나오잖아여...

    >

    > DB에는 070000으로 저장되어있는데...

    >

    >

    > 어떻게 해야 하나여?

    >

    > 좋은 방법 없을까여?

    >

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

    >



    안녕하세요. 술친굽니다.

    IntToStr((aaa div 3600)) 함수는 단순히 정수값을 가져오지요..

    그래서 프로그램에서 원하는 값이 나오지 않습니다.

    다음 함수를 써보세요..

    FormatFloat('00', (aaa div 3600))

    두자리 값으로 지정될겁니다.

    좋은 프로그래밍 하세요.



    술친구였습니다.