Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Seleccionar los que hoy cumplen años (http://www.forosdelweb.com/f86/seleccionar-que-hoy-cumplen-anos-585208/)

maderic_m 11/05/2008 11:04

Seleccionar los que hoy cumplen años
 
Hola gente, alguien tiene idea de como yo puedo filtrar los registros de “personas” que cumple años hoy (fecha actual de sistema) a partir de la fecha de nacimiento. Yo debería tomar el campo fecha de nacimiento y CURRENT_DATE para poder saber si hoy cumple años o no, yo intente hacer algo así:

SELECT ( ( RIGHT( CURRENT_DATE, 5 ) - RIGHT( fecha_nacimiento, 5 ) ) AS edad FROM personas

Y luego mediante un algoritmo filtrar todos los que edad es = 0, de esta forma saco los que hoy cumplen años, pero el problema es que es muy ineficiente eso, cuando allá muchos registros se va a poner lento el servidor, alguien tiene una idea mejor?? Gracias

jurena 11/05/2008 12:13

Re: Seleccionar los que hoy cumplen años
 
Cita:

Iniciado por maderic_m (Mensaje 2399414)
SELECT ( ( RIGHT( CURRENT_DATE, 5 ) - RIGHT( fecha_nacimiento, 5 ) ) AS edad FROM personas
Y luego mediante un algoritmo filtrar todos los que edad es = 0, de esta forma saco los que hoy cumplen años, pero el problema es que es muy ineficiente eso, cuando allá muchos registros se va a poner lento el servidor, alguien tiene una idea mejor?? Gracias

Esto te busca aquellos en que el mes y día de hoy coincide con el mes y día de su nacimiento. No te dice los años, pero sí selecciona los que cumplen el día de hoy

SELECT * from personas where date_format (fecha_nacimiento, '%m') = date_format (now(), '%m') AND date_format(fecha_nacimiento, '%d') = date_format (now(), '%d')

gnzsoloyo 11/05/2008 12:20

Re: Seleccionar los que hoy cumplen años
 
¿Para que te complicas con RIGHT(), si tienes la función YEAR()?
Código:

SELECT (YEAR(CURRENT_DATE()) - YEAR(fecha_nacimiento)) edad FROM personas;
En cuanto a acotar a las que cumplen el mismo día, bueno, sería:
Código:

SELECT (YEAR(CURRENT_DATE()) - YEAR(fecha_nacimiento)) edad
FROM personas
WHERE (DAY(CURRENT_DATE()) = DAY(fecha_nacimiento)
AND MONTH(CURRENT_DATE()) = MONTH(fecha_nacimiento)
AND YEAR(CURRENT_DATE()<YEAR(fecha_nacimiento));


maderic_m 11/05/2008 12:44

Re: Seleccionar los que hoy cumplen años
 
Muchas gracias jurena y gnzsoloyo, me anduvieron bien las dos soluciones.

jurena 11/05/2008 13:50

Re: Seleccionar los que hoy cumplen años
 
de nada, amigo, aunque la solución buena es la de gnzsoloyo, pues la consulta te saca además el número de años y lo hace usando las funciones más apropiadas.

Yo aprovecho para abusar de nuevo de los conocimientos de gnzsoloyo y preguntarle si existe alguna diferencia de rendimiento entre una consulta con date_format ('%d') y otra con DAY(), y lo mismo com MONTH () y YEAR() respecto a las consultas con date_format('%m'), etc.
Gracias por anticipado.


La zona horaria es GMT -6. Ahora son las 10:17.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.