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
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
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
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 ;
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
Testei e funcionou:
WHERE
(month(nascimento) = month(now()) and day(nascimento) = (day(now()))+7) ‘’)Aniversariando dentro de 7 dias
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