日付を比較するには?

解決


ニトロ  2008-02-28 05:46:54  No: 29941  IP: [192.*.*.*]

DateTimePickerで選択された日付(DateTimePicker.Date)と
DBから抽出した日付(Query1.FieldByNAme('Date'))を比較して何日の差が
あるかを出すにはどうすればいいのでしょうか?
※必ずDateTimePickerの方が大きくなります。
※DBにはDate型で「2008/01/01」の形で登録されています。

編集    削除
KHE00221  2008-02-28 06:24:40  No: 29942  IP: [192.*.*.*]

DateUtils.pas の  DaysBetween関数を使用して下さい。

var
    D1,D2: TDateTime;
    I: Integer;
begin
    D1 := StrToDate('2007/11/10');
    D2 := StrToDate('2008/07/16');
    I := DaysBetween(D1,D2);
end;

編集    削除
おっと  2008-02-29 00:15:12  No: 29943  IP: [192.*.*.*]

TDateはControlsの中でTDate = type TDateTimeと宣言されているので
TDateTimePicker.Dateといえども時間を保持しています。

var
  FromDate, ToDate: TDate;
  I: integer;
begin
  FromDate := EncodeDate(2008,2,28) + EncodeTime(12,0,0,0);
  ToDate := EncodeDate(2008,2,29) + EncodeTime(11,59,59,0);
  I := DaysBetween(FromDate, ToDate);
end;
とするとI=0になります。
時間に関係なく日々計算するには
  FromDate := DateOf(FromDate);
  ToDate := DateOf(ToDate);
で時間を削除してください。

編集    削除
ニトロ  2008-02-29 17:54:57  No: 29944  IP: [192.*.*.*]

解決しました
ありがとうございます

編集    削除