Hola Agag4,
Si utilizas dialecto 3 como indicas entonces corta por lo sano: cambia los tipos de los campos a timestamp.
Luego en Delphi dispones de un buen componente para ingresar fechas y/o horas: TDateTimePicker.
Puedes disponer de 2 grupos de 2 TDateTimePicker (es decir, 4): el primer par para formar la fecha y hora de inicio y el 2do par para de fin.
Explico medianamente el uso del componente, la propiedad Kind establece si ha de ingresar fecha u hora. Dependiendo del caso el componente adquiere una forma u otra. Ofrece un diseño bastante minimalista así que no te preocupes.
Luego tiene las propiedades .Date, .Time y DateTime para leer o establecer una fecha, hora y Fecha/Hora determinada. Cuando estableces en kind el valor dtkDate al leer la propiedad DateTime se tendrá la fecha seleccionada con la hora establecida previamente o la de por defecto. En forma inversa, si está establecido en dtkTime, al leer la propiedad DateTime se leerá la hora seleccionada con la fecha establecida previamente o la de por defecto.
Entonces, cuando uno está en dtkDate, es más conveniente utilizar la propiedad Date para no leer una "hora basura". Y lo análogo para cuando está en dtkTime.
La pregunta aquí es ¿como entonces obtener una fecha/hora según dos TDateTimePicker? Fácil, estableces la hora seleccionada en el TDateTimePicker en modo dtkTime al TDateTimePicker que esté en modo dtkDate. Por ejemplo:
dtpr1.Time := dtpr2.Time;
Y luego mostramos leyendo desde la propiedad DateTime del TDateTimePicker para la fecha:
ll1.Caption := DateTimeToStr(dtpr1.DateTime);
O de forma análoga, pasas la fecha hacia el de las horas, y luego procedes a leer la propiedad DateTime de éste.
Una ves que ya tienes formada la fecha/hora en cualesquiera de tus componentes tanto para la de inicio como de fin sólo debes pasar el dato a los parámetros de tu query. Por ejemplo:
qy1.ParamByName(FechaHoraIni).AsDateTime := dtpr1.DateTime;
qy1.ParamByName(FechaHoraIni).AsDateTime := dtpr3.DateTime;
Espero que se entienda.
Saludos,