Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta dato fecha

Estas en el tema de Consulta dato fecha en el foro de Bases de Datos General en Foros del Web. Hola, a todos Necesito hacer una consulta que me devuelva los registros que cumplen años exactamente dentro de 20 dias (sin importar el año de ...
  #1 (permalink)  
Antiguo 12/05/2009, 09:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 14
Antigüedad: 15 años
Puntos: 0
Consulta dato fecha

Hola, a todos

Necesito hacer una consulta que me devuelva los registros que cumplen años exactamente dentro de 20 dias (sin importar el año de nacimiento).

La consulta que realizo ahora me devuelve los que al día de hoy (12-05-2009) cumplen años el 01-06-2009

Pero en realidad lo que necesito es hacer la consulta que me traiga los que cumplen años el 01-06-2009, 01-06-2008, 01-06-2007, 01-06-2006 etc, etc. sin importar el año de nacimiento

En la base tengo el campo DATE con este formato 0000-00-00

Cómo debería hacer para hacer la consulta de esta forma?


----

Yo hago lo siguiente PERO sólo sirve para el año 2009:

$envio = date("m-d", strtotime("$hoy +$dias day"));

$sql4 = "SELECT * FROM hijos WHERE fecha = '$envio'";

o también (gracias Adolfiten)

SELECT *FROM hijos WHERE fecha = DATE_ADD(CURDATE(), INTERVAL 20 DAY);

Cómo sería esto mismo pero sin importar el año en curso???

Desde ya muchisimas gracias!!!






Muchisimas gracias!!
  #2 (permalink)  
Antiguo 12/05/2009, 10:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta dato fecha

Prueba esto:
Código sql:
Ver original
  1. SELECT * FROM hijos WHERE DATE_FORMAT(DATE_ADD(fecha, INTERVAL 20 DAY),'%m%d') = DATE_FORMAT(CURDATE(),'%m%d')
  #3 (permalink)  
Antiguo 12/05/2009, 11:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 3 meses
Puntos: 360
Respuesta: Consulta dato fecha

Esta también te puede servir:

Código mysql:
Ver original 

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 12/05/2009, 11:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 14
Antigüedad: 15 años
Puntos: 0
Respuesta: Consulta dato fecha

Hola Muchas gracias!!

Le tuve que hacer un retoque a la consulta porque estaba al revez.

WHERE DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 20 DAY ),'%m%d') = DATE_FORMAT(news_hijos.fecha, '%m%d');";

ahora funciona bien!!

Muchisimas gracias!!!
  #5 (permalink)  
Antiguo 12/05/2009, 12:38
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Consulta dato fecha

Ya está solucionado pero me quedé con la duda de si la sentencia que propuse en el otro post funcionaría... la planteo acá.

Código Consulta SQL:
Ver original
  1. SELECT *
  2. FROM hijos
  3. WHERE DAY(fecha) = DAY(DATE_ADD(CURDATE(), INTERVAL 20 DAY))
  4. AND MONTH(fecha) = MONTH(DATE_ADD(CURDATE(), INTERVAL 20 DAY));

¿No es más fácil hacer la cuenta para saber qué día y de qué mes cae la fecha 20 días adelante y preguntar porque las fechas tengan el mismo Nro. de día y el mismo Nro. de mes?

Saludos gente.
  #6 (permalink)  
Antiguo 12/05/2009, 12:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta dato fecha

Cierto, lo puse al revés.
En cuanto a lo otro, no puedo decir qué es mejor, pero sí que tras alguna prueba en una base con un número razonable de registros, la sintaxis de Adolfiten fue algo más rápida que la que emplea del date_format. Fue más lenta la que emplea CONCAT. Habría que hacer más pruebas y explicar el porqué, pero ahí dejo la pregunta también yo para nuestros técnicos.
EDITO para hacer algunas sugerencias: Entiendo que el trabajo con números es siempre más rápido, y en el caso de fechas, que se guardan como números, más eficiente, sobre todo cuando trabaja con funciones propias que además afectan sólo a una parte. Entiendo asimismo que una función propia del programa, como es date_format, sea algo más rápida que concat, que conlleva la reunión y un casting a texto. Esto es lo que se me ocurre. Yo me quedo con la de Adolfiten.
saludos

Última edición por jurena; 13/05/2009 a las 03:10
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:32.