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

Consulta MYSQL quién cumplió justo 100 años e/2 fechas dadas

Estas en el tema de Consulta MYSQL quién cumplió justo 100 años e/2 fechas dadas en el foro de Mysql en Foros del Web. Hola a todos...!!! Necesito hacer una consulta MYSQL para saber quién cumplio justo 100 años de antigüedad entre dos fechas dadas. He hecho esto pero ...
  #1 (permalink)  
Antiguo 02/06/2012, 21:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Consulta MYSQL quién cumplió justo 100 años e/2 fechas dadas

Hola a todos...!!!

Necesito hacer una consulta MYSQL para saber quién cumplio justo 100 años de antigüedad entre dos fechas dadas.

He hecho esto pero a partir de ahí no me doy cuenta como abanzar para obtener el resultado entre dos fechas dadas cualesquiera:

Código PHP:
$query "SELECT fecha FROM documentos
WHERE (YEAR(CURRENT_DATE) - YEAR(fecha)) - (RIGHT(CURRENT_DATE,5) < RIGHT(fecha,5)) = '100'"

Por favor, alguien me puede orientar?
  #2 (permalink)  
Antiguo 03/06/2012, 08:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta MYSQL quién cumplió justo 100 años e/2 fechas dadas

La fecha actual no interviene en un cálculo de ese tipo, porque ese rango puede no pertenecer al día de la fecha.
Lo que tienes que hacer es tratar de definir una condición que se deba cumplir en forma abstracta, sin importar el rango elegido.
Por ejemplo: Sabemos que lo que buscas es a las personas que antes de la primera fecha tenían 99, y luego de la última, 100. En ese contexto, qué día cumple 100, es irrelevante, porque eso no es lo que estás tratando de averiguar, sino que los cumple dentro del rango de días elegido.
Eso sería mas o menos:
Código MySQL:
Ver original
  1. SELECT fecha
  2. FROM documentos
  3.     TIMESTAMDIFF(YEAR, fecha, fechainferior) = 99
  4.      AND
  5.     TIMESTAMDIFF(YEAR, fecha, fechainferior) = 100;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/06/2012, 11:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Consulta MYSQL quién cumplió justo 100 años e/2 fechas dadas

Hola gnzsoloyo, gracias por ayudarme!

Es la primera vez que utilizo "TIMESTAMPDIFF", he estado leyendo y parece simple su implementación, pero a mi no me funciona en este caso para sacar datos en un rango de fechas como me indicas, seguramente algo estoy haciendo mal!

Por ejemplo, lo he utilizado así:

Código HTML:
SELECT fecha
FROM documentos
WHERE
     TIMESTAMDIFF(YEAR, fecha, '2012-05-25') = 99
     AND
     TIMESTAMDIFF(YEAR, fecha, NOW()) = 100;
Supongo que en tu ejemplo habrás querido poner "fechainferior y fechasuperior" para definir el rango de días. Pero no logro hacerlo funcionar, no me da resultados y se que los hay.
  #4 (permalink)  
Antiguo 03/06/2012, 13:21
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Consulta MYSQL quién cumplió justo 100 años e/2 fechas dadas

Funcionó...!

Resulta que estaba cometiendo una torpeza, debido a que en "fechainferior" utilizaba la variable "$desde" y no le estaba poniendo sus corespondientes comillas '' y eso hacía que no diera resultados!!!

Lo hice así y aparentemente funciona:

Código HTML:
SELECT fecha
FROM documentos
WHERE
     TIMESTAMDIFF(YEAR, fecha, '$desde') = 99
     AND
     TIMESTAMDIFF(YEAR, fecha, NOW()) = 100;
gnzsoloyo te agradezco muchísimo la ayuda, pero sobre todo el aporte de enseñanza que me has dado con una simple explicación... nuevamente muchas gracias!!!

Saludos!

Etiquetas: justo, select, sql
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 22:54.