In diesem Fall wäre
BETWEEN wohl nicht geeignet da es ja die "begrenzungswerte" mit einschließt (>= AND <=).
Somit würde bei
1.5.2004 19:00 bis 2.5.2004 19:00
2.5.2004 19:00 bis 3.5.2004 19:00
Der Zeitstempel 2.5.2004 19:00 in beiden Abfragen berücksichtigt werden.
Ich würde abfragen: (datum > 1.5.2004 19:00) AND (datum <= 2.5.2004 19:00). Dann müsste es eigentlich stimmen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
anzahl : Integer;
von : TDateTime;
bis : TDateTime;
begin
von := EncodeDateTime(2004,5,1,19,00,00,00);
//1. Mai 2004 19:00
bis := EncodeDateTime(2004,5,2,19,00,00,00);
//2. Mai 2004 19:00
dbMain.HostName:=Form2.Hostname.Text;
//Server
dbMain.User:=Form2.User.Text;
//Benutzername
dbMain.Password:=Form2.Password.Text;
//Passwort
dbMain.Database:=Form2.Datenbank.Text;
//Name der Datenbank
dbMain.Connected:=True;
//Verbindung herstellen
Screen.Cursor := crHourGlass;
try
with qrMain
do
begin
Close;
SQL.Text :=
'
SELECT COUNT(*) AS anzahl '+#10+
'
FROM table_ordertracking '+#10+
'
WHERE (order_type=:order_type)'+#10+
'
AND (datum > :von) AND (datum <= :bis)';
ParamByName('
order_type').AsString := '
FT';
ParamByName('
von').AsDateTime := von;
ParamByName('
bis').AsDateTime := bis;
Open;
anzahl := FieldByName ('
anzahl').AsInteger;
DFCount.Text:= IntToStr(anzahl);
qrmain.Close;
finally
Screen.Cursor := crdefault;
end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"