Usuário com melhor resposta
Consultar Aniversariantes apenas com dia e mes

Pergunta
-
Pessoal;
preciso desenvolver uma consulta na tabela Pessoa que traga os aniversariantes de um determinado período, pensei da seguinte forma:
select * from pessoa where day(DataNascimento) >= 15 and day(DataNascimento) <= 30 and MONTH(DataNascimento) = 6
só que tenho um problema, o sistema vai consultar toda semana os aniversariantes, neste caso tenho um problema, por que quando numa determinada semana eu tiver a seguinte condição 28/04 a 05/05, não consigo colocar o mês diferente, como posso indicar este período para pegar os aniversariantes se no caso acima eu estou indicando apenas um mês! existe outro modo mais fácil de fazer a consulta?
WS
Respostas
-
Entendi, esqueci a questão do ano, uma coisa rapida que pensei foi em fazer um "OR", por exemplo que voce falou de 28/04 a 05/50, no where ele pega todo mundo que fazer aniversario >= 28 de abril somente em abril e no or todo mundo que faz no dia <= 5 somente de maio, veja o que acha:
select * from pessoa where (day(DataNascimento) >= 28 and MONTH(DataNascimento) = 4) or (day(DataNascimento) <= 5 and MONTH(DataNascimento) = 5)
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Wagner Sena PE sexta-feira, 10 de maio de 2013 18:21
Todas as Respostas
-
Voce pode usar a função getdate() incrementando ou decrementando o periodo que voce quer, por ex abaixo traria os aniversariantes que estivessem entre a semana passada e a proxima (-7 e +7 respectivamente):
select * from pessoa where DataNascimento between GETDATE() -7 and GETDATE() + 7
Alexandre Matayosi Conde Mauricio.
-
-
por exemplo se no banco tenho aniversariante 12/05/1984 e eu faço a consulta:
select * from pessoa
where DataNascimento between GETDATE() -7 and GETDATE() + 7concorda comigo que a consulta não vai retornar nada? pois ele fará a consulta between 03/05/2013 and 17/05/2013
-
Entendi, esqueci a questão do ano, uma coisa rapida que pensei foi em fazer um "OR", por exemplo que voce falou de 28/04 a 05/50, no where ele pega todo mundo que fazer aniversario >= 28 de abril somente em abril e no or todo mundo que faz no dia <= 5 somente de maio, veja o que acha:
select * from pessoa where (day(DataNascimento) >= 28 and MONTH(DataNascimento) = 4) or (day(DataNascimento) <= 5 and MONTH(DataNascimento) = 5)
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Wagner Sena PE sexta-feira, 10 de maio de 2013 18:21
-
Bom dia,
Wagner, experimente fazer testes mais ou menos dessa forma:
select * from Pessoa where DATEADD(YEAR, DATEDIFF(YEAR, DataNascimento, @DataIni), DataNascimento) between @DataIni and @DataFim -- @DataIni = '28/04/2013' e @DataFim = '05/05/2013'
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br