Q&A

  • 재직기간 계산..
오라클에는 months_between(To_date, From_date) 함수가 있습니다.
델파이에는 months_between, days_between 함수 둘 다 있습니다.

오라클 서버에서든지.. 델파이 프로그램에서든지..

아무튼.. 할 수 있는 기능을 총동원해서...

달력을 보고 직접 헤아리는 것처럼.. 재직기간을

5년 6개월 27일.. 이렇게 계산해 낼 수 있는지.. 알고 싶습니다.

내부계산에 필요한 총 재직일수는 오라클 내에서 단순히 뺄셈만 해서 가능한데요.. 년, 월, 까지도 계산을 하는데요..
나머니 일수를 어찌 계산하는지.. 거기부터.. 막막하네요..


델파이 help를 보면 30.4375일을 평균 일수로 한다고 나와있는데..

이 값을 이용하는지.. 다른 묘안이 있는지.. 궁금합니다.

모두들.. 즐거운 프로그램 되세요..

*:..:*
2  COMMENTS
  • Profile
    바보래요 2004.05.26 01:31




    var
       y1, m1, d1, y2, m2, d2 : Word;
    begin
       DecodeDate( txtDate1.Date, y1, m1, d1 );
       DecodeDate( txtDate2.Date, y2, m2, d2 );

       if d2 < d1 then begin
          d2 := d2 + 30;
          m2 := m2 - 1;
       end;

       d1 := d2 - d1;

       if m2 < m1 then begin
          m2 := m2 + 12;
          y2 := y2 - 1;
       end;

       m1 := m2 - m1;
       y1 := y2 - y1;



    이렇게 하니 나오네요....
  • Profile
    이중철 2004.05.28 01:41
    어제 저녁 리플 달려고 하다보니 더 깔끔하게 잘되어 있는 님께서

    리플이 있어서 안 올렸어요

    그런데 단 한가지 눈에 거슬리는 것이 있어서 이것만 집어넣어서 수정할께요

    var
       y1, m1, d1, y2, m2, d2, d3 : Word;
       fd : boolean;
    begin
       DecodeDate( txtDate1.Date, y1, m1, d1 );
       DecodeDate( txtDate2.Date, y2, m2, d2 );
       fd := false;
       if d2 < d1 then begin
         fd := true;
         m2 := m2 - 1;
       end;

       if m2 < m1 then begin
          m2 := m2 + 12;
          y2 := y2 - 1;
       end;
      
       if fd then begin
          DecodeDate( EndOfAMonth(y2, m2) , y2, m2, d3 );
          d2 := d3 + d2;
       end;

       d1 := d2 - d1;

       m1 := m2 - m1;
       y1 := y2 - y1;