Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Filtrar campos DateTime (https://www.clubdelphi.com/foros/showthread.php?t=39879)

MARYLOSO 01-02-2007 08:01:10

Filtrar campos DateTime
 
Hola amigos :confused:

Tengo un problemita, quiero hacer reportes de tablas por ejemplo :
Un Listado de cumpleaños, ese dato lo puedo obtener filtrando el mes en el campo fecha de nacimiento que es un DateTime, cuando halgo la consulta trato de poner por ejemplo los cumpleaños de marzo con "like */03/*" y me dice que no es un valor valido de fecha, tengo muchos reportes que invariablemente tengo que filtrar el mes o el año de un campo TDateTime y no se como filtrarlo.
Bueno espero me hayan entendido mi duda

Gracias de antemano y espero su pronta ayuda :)

marcoszorrilla 01-02-2007 08:39:59

Lógicamente el operador Like se utiliza para el texto no para fechas. Lo que quieres hacer deberas de utilizar Month o Extract Month from Campo_Fecha, depende del motor y tipo de tablas puede variar algo la instrucción a utilizar.

Un Saludo.

ContraVeneno 01-02-2007 17:15:03

Código SQL [-]
Select *
from TuTabla
where fecha between '2006-03-01 00:00:00' and '2006-03-31 23:59:59'

Dependerá de la base de datos que manejes.

Código Delphi [-]
with tudatset do begin
 if active then close;
 sql.clear
 sql.add('select *');
 sql.add('from tutabla');
 sql.add('where fecha between '''+formatdatetime('yyyy-mm-dd',dtpFechaIni.DateTime)+''' and '''+formatdatetime('yyyy-mm-dd',dtpFechaIni.DateTime)+'''');
Open;
... 
end; //

Puedes usar parámetros, puedes usar QuotedStr, pues cambiar el formato de la fecha dependiendo de tu manejador... en fin, puedes hacer un millón de cosas.

MARYLOSO 01-02-2007 18:30:41

Cita:

Empezado por marcoszorrilla
Lógicamente el operador Like se utiliza para el texto no para fechas. Lo que quieres hacer deberas de utilizar Month o Extract Month from Campo_Fecha, depende del motor y tipo de tablas puede variar algo la instrucción a utilizar.

Un Saludo.

Hola Gracias por responder
Justo esa es mi pregunta si puedo poner una funcion de ese tipo de ExtractMonth dentro de la consulta SQL, mi base es paradox del dbe de delphi, tiene alguna idea de si existe esta funcion como se llama?
Saludos

MARYLOSO 01-02-2007 18:33:18

Cita:

Empezado por ContraVeneno
Código SQL [-]
Select *
from TuTabla
where fecha between '2006-03-01 00:00:00' and '2006-03-31 23:59:59'





Dependerá de la base de datos que manejes.


Código Delphi [-]
with tudatset do begin
if active then close;
sql.clear
sql.add('select *');
sql.add('from tutabla');
sql.add('where fecha between '''+formatdatetime('yyyy-mm-dd',dtpFechaIni.DateTime)+''' and '''+formatdatetime('yyyy-mm-dd',dtpFechaIni.DateTime)+'''');
Open;
...
end; //





Puedes usar parámetros, puedes usar QuotedStr, pues cambiar el formato de la fecha dependiendo de tu manejador... en fin, puedes hacer un millón de cosas.

Hola

Esta solucion que me das de poner un rango de fechas no me funciona teniendo en cuenta que el mes es fijo para cualquier año que tenga en mi base de datos, porque los cumpleaños de marzo son todos los del mes 3 en cualquier año entiendes, tendria que poner pedacitos de rangos año por año ycual seria el primer y ultimo año, entiendes.
Esta variante que me dices de cambiar el formato de fecha resulta interesante deja probar.
Saludos

MARYLOSO 02-02-2007 20:23:18

Solucion al problema Filtrar un DateTime
 
Hola amigos

Bueno a pesar de que no encontre justa la solucion entres sus respuestas si me dio una idea de por donde buscarle y aqui esta la solucion

En el sql de un TQuery ponemos la instruccion que quede asi

Select * from Mitabla
where extract(month from DateField) = Mes

y si lo hacemos directamente en el filtro de un TTable

Month(DateField) = Mes

Igual con el Año (Year) y el dia (Day)

Saludos y Gracias


La franja horaria es GMT +2. Ahora son las 22:15:32.

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