Select selecionando próximos aniversariantes

Preciso selecionar através de uma Select, a partir da Data de nascimento, as pessoas que estarão aniversariando nos próximos sete dias.

Alguém sabe como fazer?

Obrigado

da uma olhada neste topico, isto que vc precisa.

http://www.netmake.com.br/forum/index.php?topic=569.msg1664#new

Amigo não vi a solução no link indicado.

Obrigado.

http://www.netmake.com.br/forum/index.php?topic=569.msg1661#msg1661

Ali esta o que vc vai usar, agora o select, nao tem como eu montar para vc, pois vc nao passou a sua tabela.

Coloca ai para nos vermos

select id, nome, datanasc from contatos WHERE datanasc>= NOW() and datanasc<=DATE_ADD(NOW(),INTERVAL 7 DAY);

Obs: Para MySql

fonte de pesquisa: http://mirrors-r-us.net/doc/refman/4.1/pt/date-and-time-functions.html

Fiz testes aqui e funcionou.

acho que e melhot mesmo, pois vem so vem os resultados direto no mysql e é bem mais rapido

Obrigado mas este Select não funciona como eu quero, ele trata a data de nascimento com o ano, eu preciso que seja filtrado os registros em que a pessoa complete aniversario nos próximos sete dias a partir da data de nascimento. Não importa o ano de nascimento e sim dia e mês.

Certo, tem razão:
Mas com um pouquinho de criatividade e estudando as funções de data do sql do MySQL podemos chegar no que é necessário:

SELECT id, nome, aniversario FROM contatos
WHERE concat_ws(’-’,year(now()),month(aniversario),day(aniversario)) >= NOW() and concat_ws(’-’,year(now()),month(aniversario),day(aniversario))<=DATE_ADD(NOW(),INTERVAL 7 DAY);

Se você se aprofundar vai conseguir um script até melhor que esse.

O Script vai funcionar melhor com curdate() no lugar de now()

Haroldo,

Infelizmente não filtrou os registros, ja analizei o Select “com o pouco conhecimento que tenho” e não achei nenhum erro.

Não sei se vc chegou a testar o select.

Obrigado

pode me enviar um dump de sua tabela?
é Mysql?

Prezados,

Se alguém ainda interessar, acho que o imparse ocorrido é pq o código enviado por Harold está perfeito, porém pega os aniversariante a partir de amanhã. Se quiser nos dados tenham a data de hoje também, segue o código:

SELECT id, nome, aniversario FROM contatos
WHERE (concat_ws(’-’,year(now()),month(aniversario),day(aniversario)) >= NOW() and concat_ws(’-’,year(now()),month(aniversario),day(aniversario))<=DATE_ADD(NOW(),INTERVAL 7 DAY))
or
(DAY(aniversario) = DAY(CURDATE()) AND MONTH(aniversario) = MONTH(CURDATE()))

Att,

Welington Santos

1 Curtida

Estou tentando sem sucesso realizar essa sql, alguem conseguiu?
abaixo a sql da tabela para teste:

CREATE TABLE contatos (
id int(11) NOT NULL auto_increment,
nome varchar(100) NOT NULL,
aniversario date NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;


– Extraindo dados da tabela contatos

INSERT INTO contatos (id, nome, aniversario) VALUES (1, ‘arquimedes’, ‘2013-01-29’),
(2, ‘xico tripa’, ‘1999-01-30’),
(3, ‘ze’, ‘2000-01-31’),
(4, ‘cici’, ‘1078-02-01’),
(8, ‘tiazinha’, ‘1923-06-04’);
segue a sql da tabela em teste:

Att Arquimedes

Com a ajuda do grande George Carvalho a sql ficou assim;

select nome,nascimento from contatos
WHERE
(month(nascimento) = month(now()) and day(nascimento) = (day(now()))+3)

Valew George, obrigado pela força.

Att Arquimedes

Muitíssimo obrigado, me ajudou muito, eu precisava do aniversariantes do dia , então só alterei o interval para 1