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

sentencia sql para devolver cumpleaños en la semana

Estas en el tema de sentencia sql para devolver cumpleaños en la semana en el foro de Bases de Datos General en Foros del Web. Hola Soy nuevo haciendo sentencias sql y me surgio una que me tiene loco, quizas sea facil pero e estado investigando y no encuentro nada ...
  #1 (permalink)  
Antiguo 24/03/2004, 08:12
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 20 años, 9 meses
Puntos: 0
sentencia sql para devolver cumpleaños en la semana

Hola
Soy nuevo haciendo sentencias sql y me surgio una que me tiene loco, quizas sea facil pero e estado investigando y no encuentro nada
Tengo una tabla de empleados con 3 campos id_empleado, nombre, fechaNacimiento. El formato de la fecha de nacimiento es como esta 31/01/1977. Quisiera encontrar una sentencia sql que me devuelba las perdonas que cumplan año durante la semana que esta en curso, teniendo en cuenta que el primer dia de lña semana es el Lunes
Les agradesco de antemano cuanquier ayuda que me puedan dar
  #2 (permalink)  
Antiguo 24/03/2004, 09:50
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 10 meses
Puntos: 50
Hola.. si tu campo fechaNacimiento es de tipo date.. puedes hacer lo siguiente.

Cita:
select *
from tu_tabla
where fechaNacimiento between getdate() and dateadd (day,7,getdate())
Con dateadd , lo que hago es tomar el día actual y que me muestre los de 7 días siguiente, y con getdate me devuelve la fecha actual.

Creo que con estó lo puedes ajustar a lo que necesitas.

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 24/03/2004, 09:55
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 20 años, 9 meses
Puntos: 0
muchas gracias por tu respuesta amigo RootK pero esa sentencia ya la prove y no me funciono sdebido a que la fecha en la base de datos tienen años fiferentes pero he seguido investigando y encontre una sentencia que hace algo parecido a lo que yo quiero falta profundizar un poco en ella aver si hace exactamente lo que quiero la sentencia es:

SELECT Nombre, id_nombre, FechaNacimiento
FROM dbo.Personal
WHERE DATEPART(ww, FechaNacimiento)=DATEPAR(ww, { fn NOW() })

gracias por tu interes
  #4 (permalink)  
Antiguo 24/03/2004, 11:23
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 8 meses
Puntos: 0
Hola... la solución que has obtenido es un tanto engañosa, no siempre te va a funciionar

Después de probar creo que tengo lo que necesitas, aunque es un poco liosa

SELECT FechaAlta,
convert(datetime, convert(varchar(4), Year(Getdate())) + '-' +
convert(varchar(2), Month(FechaAlta)) + '-' +
convert(varchar(2), Day(FechaAlta)))AS FF
FROM Empleados
WHERE
convert(datetime, convert(varchar(4), Year(Getdate())) + '-' +
convert(varchar(2), Month(FechaAlta)) + '-' +
convert(varchar(2), Day(FechaAlta))) BETWEEN


(case WHEN datepart(dw, GetDate()) = 1 THEN
GetDate() - 6
ELSE
GetDate() - (datepart(dw, GetDate()) - 2) END) AND
(case WHEN datepart(dw, GetDate()) = 1 THEN
GetDate()
ELSE
GetDate() + (8 - datepart(dw, GetDate())) END)

JEJE

En este caso, lo que hago es saber cuando un empleado cumple años en la empresa, cambia FecAlta por FechaNacimiento y listo.

El motivo de que sea tan enrevesada, es porque el puñetero SQL se empeña en tener como día uno de la semana el domingo, en fin... supongo que se puede mejorar, (seguro que es mejorable)

Un saludo y espero que te sirva de ayuda
  #5 (permalink)  
Antiguo 24/03/2004, 12:24
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 20 años, 9 meses
Puntos: 0
no esta un poco engorrosa y tienes razon acerca de que la otra sentencia es engañosa encontre otra similar pero tiene un defecto debido a los años biciestos pero creo que me sirve
La sentencia es:

SELECT Nombre, id_nombre, FechaNacimiento
FROM dbo.Personal
WHERE DATEPART(y, FechaNacimiento) BETWEEN inferior AND superior

donde inferior y superior son los dias del año correspondiente al primer dia de la semana y el ultimo dia de la semana
  #6 (permalink)  
Antiguo 25/03/2004, 04:04
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 8 meses
Puntos: 0
Sí... es un poco liosa, la mayoría de la complicación es porque el primer día de la semana es el domingo, pero buscando, encontré la forma de especificar que el primer día de la semana sea el lunes, y la select se simplifica

SET DATEFIRST 1
SELECT FechaAlta, Nombre, Apellido1
FROM Empleados
WHERE
convert(datetime, convert(varchar(4), Year(Getdate())) + '-' +
convert(varchar(2), Month(FechaAlta)) + '-' +
convert(varchar(2), Day(FechaAlta))) BETWEEN

(GetDate() - (datepart(dw, GetDate()) - 1)) AND
(GetDate() + (7 - datepart(dw, GetDate())))


Esto es má sencillo, un saludo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 00:29.