Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 11-may-2008, 11:04   #1 (permalink)
maderic_m no se puede cailificar en este momento
 
Avatar de maderic_m
 
Fecha de Ingreso: agosto-2007
Mensajes: 45
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
maderic_m está desconectado   Responder Citando
Antiguo 11-may-2008, 12:13   #2 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 814
Re: Seleccionar los que hoy cumplen años

Cita:
Iniciado por maderic_m Ver Mensaje
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')
jurena está desconectado   Responder Citando
Antiguo 11-may-2008, 12:20   #3 (permalink)
gnzsoloyo tiene algunos puntos positivos de karma
 
Avatar de gnzsoloyo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 824
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));
__________________
¿Quién de sus aciertos aprende?, si yo aprendo de mis errores constantemente...
gnzsoloyo está desconectado   Responder Citando
Antiguo 11-may-2008, 12:44   #4 (permalink)
maderic_m no se puede cailificar en este momento
 
Avatar de maderic_m
 
Fecha de Ingreso: agosto-2007
Mensajes: 45
Re: Seleccionar los que hoy cumplen años

Muchas gracias jurena y gnzsoloyo, me anduvieron bien las dos soluciones.
maderic_m está desconectado   Responder Citando
Antiguo 11-may-2008, 13:50   #5 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 814
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.
jurena está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:47.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93