Te aconsejo que busques un manual de SQL, hay muchos por la red, yo usaría esto:
Código SQL
[-]
select *
from a_presencia
inner join a_empleat
on a_presencia.nro_matricula = a_empleat.nro_matricula where
dia between ( : prFechaInicio and : prFechaFin) and
horaentrada >= : prHoraInicio and horasalida <= : prHoraFin;
En delphi:
Código Delphi
[-]
query1.sql.text := query1.params.ByName('prFechaInicio').AsDate := datetimepicker1.date;
query1.params.ByName('prFechaFin').AsDate := datetimepicker2.date;
query1.params.ByName('prHoraInicio').AsTime := datetimepicker3.Time;
query1.params.ByName('prHoraFin').AsTime := datetimepicker4.Time;
query1.Open;
En ADO, no estoy seguro de que sea "params.ByName", o bien "params.Fieldbyname", pero el code insight de delphi te dirá como es.
Dentro del sql hay unas condiciones que llevan los dos puntos delante ":", eso se interpreta como parámetros que se le darán al SQL, por eso despues uso Query.params.blahblah
Saludos