Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2007
MARYLOSO MARYLOSO is offline
Registrado
 
Registrado: jul 2005
Posts: 6
Poder: 0
MARYLOSO Va por buen camino
Filtrar campos DateTime

Hola amigos

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
Responder Con Cita
  #2  
Antiguo 01-02-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 01-02-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
  #4  
Antiguo 01-02-2007
MARYLOSO MARYLOSO is offline
Registrado
 
Registrado: jul 2005
Posts: 6
Poder: 0
MARYLOSO Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 01-02-2007
MARYLOSO MARYLOSO is offline
Registrado
 
Registrado: jul 2005
Posts: 6
Poder: 0
MARYLOSO Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 02-02-2007
MARYLOSO MARYLOSO is offline
Registrado
 
Registrado: jul 2005
Posts: 6
Poder: 0
MARYLOSO Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Filtrar tabla por dos campos Sayuri Conexión con bases de datos 12 10-10-2010 17:02:03
Restar dos campos de Tipo DateTime JuanPa1 SQL 4 19-08-2006 02:03:34
Campos DateTime recibiendo Time amesoft Conexión con bases de datos 1 25-02-2005 22:22:23
como filtrar campos busqueda walace_soy Conexión con bases de datos 1 27-02-2004 19:44:14
filtrar campos lookup allende Conexión con bases de datos 2 08-12-2003 19:17:34


La franja horaria es GMT +2. Ahora son las 19:44:20.


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
Copyright 1996-2007 Club Delphi