SQL - Fechas, Cumpleaños

   
Vista:

Fechas, Cumpleaños

Publicado por maria (2 intervenciones) el 01/02/2008 19:09:51
Muy buenas:

Tengo un bd en sql server, en una tabla, llamada clientes tengo los datos personales con su fecha de nacimiento (fechanac). y quiero hacer una consulta donde poniendo un intervalo de fechas me aparezcan aquellas personas vayan a cumplir años en dicha fecha. Es decir si yo pongo que quiero saber quienes cumplen años desde el 20/02/2008 hasta 15/04/2008, quiero que me muestre los datos de aquellas personas que van a cumplir, teniendo en cuenta de que el año que le indico (2008) no sirve para nada porque la gente nacio antes se supone.

De antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Fechas, Cumpleaños

Publicado por Franklin Gamboa (15 intervenciones) el 01/02/2008 21:09:38
De hecho no sirve si buscas por el año, debes buscar por el mes y el día o tener un job o un batch que año con año actualize la fecha para ponerle el año actual, lo cúla es poco practico en sistemas CRM donde queremos tambien saber cuantos años cumple.

Yo lo que haría es compararlo por meses y días, de esa forma no importa el aó, siempre lo voy a encontrar.

Saludos,

Franklin Gamboa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fechas, Cumpleaños

Publicado por maria (2 intervenciones) el 02/02/2008 00:14:54
Tienes razón, ya lo hice de mil formas comparando por dia y mes, pero me lo hace mal,
imagina que quieres hacer un busqueda de los cumples desde el 29/01 al 18/02 y tienes los siguientes datos

name fechanaci
uno 23/01/1976
dos 30/01/1987
tres 12/02/1984
cuatro 10/01/1983

se supone que la consulta debe de dar como resultado:
dos 30/01/1987
tres 12/02/1984

bien, pues la consulta que hice yo fue

select * from clientes
where day(fechanaci )>= 29 and month(fechanaci) >= 01 and day(fechanaci )<= 18 and month(fechanaci) <= 02

y me da como resultado

dos 30/01/1987
tres 12/02/1984
cuatro 10/01/1983

cuando el registro cuatro 10/01/1983 no tendria que aparecer, pero lo hace, porque la consulta coge aquellos registro que sean mayores o iguales que 29 y menores o iguales que 18, sin tener en cuenta el mes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fechas, Cumpleaños

Publicado por amv (14 intervenciones) el 02/02/2008 08:35:26
Prueba esto:

select * from clientes
where
(day(fechanaci )>= 29 and month(fechanaci) = 01)
or
(day(fechanaci )<= 18 and month(fechanaci) = 02)


Y si el rango de meses fuera mayor, por ejemplo, entre el 29 de enero y el 18 de junio, la consulta sería:

select * from clientes
where
(day(fechanaci )>= 29 and month(fechanaci) = 01)
or
(month(fechanaci) > 01 and month(fechanaci) < 06)
or
(day(fechanaci )<= 18 and month(fechanaci) = 06)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fechas, Cumpleaños

Publicado por maria (1 intervención) el 04/02/2008 08:59:26
Muchas gracias. Aun no lo probé, lo probare hoy por la tarde.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar