Lo malo de tratarlo como un string, son las conversiones. (dd/mm/yyyy, mm/dd/yyyy, etc.)
Puedes tratar de la siguiente manera:
Dia será del tipo TDateTime.
Trunc(Dia) devuelve la fecha sin hora.
Código Delphi
[-]
procedure TForm1.FormShow(Sender: TObject);
var
Dia: TDateTime;
begin
with DM.IBQuery1 do
begin
if Active=True then Active:=False;
UnPrepare;
SQL.Clear;
SQL.Add('SELECT DNI1, LETRA_NIF, APELLIDO_1, APELLIDO_2, NOMBRE, MATRICULA, CENTRO, OBJETO, DNI2, DIA_SALIDA, DIA_ENTRADA');
SQL.Add('FROM EXTERNOS_DNI, MOV_EXTERNOS_DNI');
SQL.Add('WHERE DNI1=DNI2 AND DIA_ENTRADA >= ESDE_ENTRADA AND DIA_ENTRADA < :HASTA_ENTRADA');
SQL.Add('ORDER BY DNI1');
Params[0].AsDateTime:=Trunc(Dia);
Params[1].AsDateTime:=Trunc(Dia+1);
Prepare;
if Active=False then Active:=True;
Open;
end;
end;