Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   DatetimePicker buscar desde hasta en SQL (https://www.clubdelphi.com/foros/showthread.php?t=95981)

giantonti1801 25-11-2022 02:09:18

DatetimePicker buscar desde hasta en SQL
 
Buena noche tengo un inconveniente en relacion una consulta que debo hacer desde delphi 11 a la base de datos y para ellos estoy usando los componente datetimepicker para que dentro de la consulta se pueda señalar la fecha desde hasta.

Código Delphi [-]
ADOQuery1.SQL.Add('where FechaCre := '+DateToStr(DateTimePicker1.Date));

al darle click a un evento on chancge no me retorna ningún resultado.

en un principio pensé que no tenía el mismo formato de fecha que la base de dato y lo verifico con un showmessage y veo que efectivamente tenemos el mismo formato. pero ahora tengo una dura:
Es posible que no me esté regresando ningún resultado porque el campo de la base de dato en de tipo Datetime y esta almacenando tanto la fecha como la hora en el mismo campo y por eso que no me retorna ningún resultado?

Código SQL [-]
2022-11-17 00:00:00.000
2022-11-18 00:00:00.000
2022-11-23 22:31:00.000

este campo fecha lo coloco el default value en cada insert
Código SQL [-]
(CONVERT([varchar](16),getdate(),(27)))
.

Como puedo arreglar para poder utilizar esta consulta desde hasta en un formulario?

NOTA: También he intentado hacer un LIKE
Código Delphi [-]
ADOQuery1.SQL.Add('where FechaCre like '+DateToStr(DateTimePicker1.Date)+'%');
pero me retorna un error '%'.

duilioisola 25-11-2022 12:38:11

Ya te hemos respondido en el otro hilo

El problema es la hora.:

Copio y pego la respuesta:

Cita:

El problema es la hora.

Modifica la hora de la fecha que utilizas como parámetro.

Código Delphi [-]
procedure TFormConsulta.DateTimePicker1Change(Sender: TObject);
begin
  LabelDesde.Caption := DateToStr(DateTimePicker1.Date);
  Filtra(DateTimePicker1.Date, DateTimePicker2.Date);
end;

procedure TFormConsulta.DateTimePicker2Change(Sender: TObject);
begin
  LabelHasta.Caption := DateToStr(DateTimePicker2.Date);
  Filtra(DateTimePicker1.Date, DateTimePicker2.Date);
 end;

procedure TFormConsulta.Filtra(Desde, Hasta: TDateTime);
begin
  /// Modifico la hora de las fechas para abarcar el dia completo
  /// DESDE = dd/mm/yyyy **00:00:00**
  /// HASTA = dd/mm/yyyy **23:59:59**

  // Quito la hora del la fecha inicial
  Desde := RecodeTime(Desde, 0, 0, 0, 0);
  // Agrego hasta el ultimo milisegundo del día a la hora final
  Hasta := RecodeTime(Hasta, 23, 59, 59, 999);

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from Tiket');
  ADOQuery1.SQL.Add('where FechaCre between :Fecha1 and :Fecha2');
  ADOQuery1.Parameters.ParamByName('Fecha1').Value := Desde;
  ADOQuery1.Parameters.ParamByName('Fecha2').Value := Hasta;
  ADOQuery1.Open;
end;


Neftali [Germán.Estévez] 25-11-2022 13:59:47

Por favor no dupiques temas, ya tienes uno abierto donde se est´contestando este tema.
Revisa la Guía de estilo de los foros.

Cierro este hilo.


La franja horaria es GMT +2. Ahora son las 17:58:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi