Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Consulta con DateTime (https://www.clubdelphi.com/foros/showthread.php?t=33181)

FunBit 29-06-2006 10:57:01

Consulta con DateTime
 
Hola de nuevo,

tengo un problema con una consulta que hago des de delphi a una bd MySQL.

La consulta és la siguiente:
Código Delphi [-]
mQuery.SQL.Clear;   
mQuery.SQL.Add('SELECT * FROM turnos');   
mQuery.SQL.Add('WHERE fecha_inicio='+QuotedStr(FormatDateTime('dd/mm/yyyy',FechaInicio)));   
mQuery.Execute;

El problema és que habiendo registros que cumplen la condición, no me saca ningún registro como resultado.

He probado con diferentes formatos de la fecha:
Código Delphi [-]
FormatDateTime('yyyymmdd hh:nn:ss',FechaInicio) 
FormatDateTime('yyyymmdd',FechaInicio) 
FormatDateTime('ddmmyyyy',FechaInicio) 
FormatDateTime('mmddyyyy',FechaInicio)

El campo fecha_inicio es tipo DateTime. Si necesitan algun otro dato... espero haberme explicado bien.

Muchas gracias de antemano.

Bicho 29-06-2006 11:17:42

No se si me ha quedado muy claro pero,

Cita:

Empezado por FunBit
Código Delphi [-]
mQuery.SQL.Clear;   
mQuery.SQL.Add('SELECT * FROM turnos');   
mQuery.SQL.Add('WHERE fecha_inicio='''+FormatDateTime('dd/mm/yyyy',FechaInicio));   
mQuery.Execute;

No se que componente estás usando, así que no te diré nada si es por el Execute en lugar de un Open como se hace para las Querys y no el Execute para los insert/update/delete.

De todos modos prueba pasándole como parámetro la fecha y sino te funciona buscaremos otra cosa:

Código Delphi [-]
mQuery.SQL.Add('SELECT * FROM turnos');   
mQuery.SQL.Add('WHERE fecha_inicio=:fecInicio');
mQuery.SQL.ParamByName('fecInicio').AsDateTime := FormatDateTime('dd/mm/yyyy',FechaInicio);

Espero te sirva

Saludos

FunBit 29-06-2006 11:30:18

Cita:

Empezado por Bicho
No se que componente estás usando, así que no te diré nada si es por el Execute en lugar de un Open como se hace para las Querys y no el Execute para los insert/update/delete.

Gracias Bicho,
mQuery és del tipo TMyQuery y no tiene el ParamByName.

He probado con el Open pero estamos en las mismas.

Cual és el formato correcto del parámetro fecha? (ddmmyyyy, dd/mm/yyyy, yyyymmdd,...) mi idea era que el problema estaba aquí...

Gracias de nuevo!:)

papulo 29-06-2006 11:43:00

Hace poco me peleé con las fechas en firebird y SQL, con este pequeño código conseguí buscar entre dos fechas capturandolas desde un TDateTimePicker

Código Delphi [-]
if bDate then
    begin
      sSQLstatement := sSQLstatement + //fechas
        ' AND st.statis_date BETWEEN date ' + QuotedStr(FormatDateTime('mm/dd/yyyy', dtFrom.Date)) +
        ' AND date ' + QuotedStr(FormatDateTime('mm/dd/yyyy', dtTo.Date));
    end;

Puede que en tu caso tengas que escribir algo así:

Código Delphi [-]
mQuery.SQL.Clear;   
mQuery.SQL.Add('SELECT * FROM turnos WHERE fecha_inicio = date' + QuotedStr(FormatDateTime('mm/dd/yyyy',FechaInicio.Date)));
mQuery.Execute;

Es solo una idea de por donde pueden ir los tiros.:)

PD: EL autor no se hace responsable de su ineptitud.

gluglu 29-06-2006 11:43:05

Me ha pasado lo mismo hoy pero con Interbase, al utilizar la fecha directamente en QuotedStr.

Yo he utilizado
Código:

QuotedStr(FormatDateTime('mm/dd/yyyy', Fecha));
y al menos en Interbase al final me ha funcionado como he querido.

Prueda al menos esa opción anteponiendo el mes al día (es decir, formato americano), pero utilizando separadores de fecha, en este caso '/'.

Saludos

gluglu 29-06-2006 11:45:43

... se me adelantaron en la respuesta !!

Lo dicho, utiliza Formato americano con separadores /

FunBit 29-06-2006 11:51:24

Muchas grácias por su ayuda!!

Efectivamente era el formato de la fecha. Por mi cuenta he seguido investigando y me ha funcionado con el formato:
Código Delphi [-]
FormatDateTime('yyyy-mm-dd',FechaInicio)

Grácias de nuevo gluglu, papulo y Bicho!!


La franja horaria es GMT +2. Ahora son las 11:45:19.

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