Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Natan Miranda

Como fazer busca por data em Mysql

Recommended Posts

Boa tarde pessoal,

 

Tenho um sistema de newsletter com três campos, sendo eles: nome(VARCHAR), data de nascimento(DATE) e e-mai(VARCHAR)l.

 

Nesta newsletters, preciso fazer um filtro para enviar e-mail somente para os cadastrados que fizerem aniversário na semana atual.

Pesquisando pela internet, um amigo deu a seguinte sugestão. Utilizar a função data para pegar a data atual e criar duas váriaveis com dia da semana inicial e dia da semana final, desta forma o código ficaria assim:

 

$dia_semana_hoje = date('w'); // pegando qual o dia da semana em que estamos

$segunda_dessa_semana = date('Y-m-d',time()-( $dia_semana_hoje) * 24*60*60);

$domingo_dessa_semana = date('Y-m-d', time()- (6-$dia_semana_hoje)*24*60*60 );

e depois no select usar o between:

SELECT.... WHERE campo_data BETWEEN '$segunda_dessa_semana' AND '$domingo_dessa_semana';

Bom tentei fazer isso e não consegui, aí pensei pensei e fiz uma pequena alteração na linha de comando:

 

$domingo_dessa_semana = date('Y-m-d', time()- (6-$dia_semana_hoje)*24*60*60 );

 

onde eu apenas inverti a posição do '-6', ficando assim:

 

$domingo_dessa_semana = date('Y-m-d', time()- ($dia_semana_hoje-6)*24*60*60 );

 

 

Depois disso, o sistema até que funcionou, mas não 100%. Acontece que ele consegue fazer o filtro dos aniversariantes daquele semana, mas somente se o ano preenchido for 2008, sendo que em anos anteriores não funciona!

 

Alguém tem alguma sugestão ou uma outra maneira de fazer este filtro...

 

Vlww.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você não cria uma trigger que atualiza as duas datas?

cria a variável dt_inicial e dt_final

atualiza todos os domingos essas variáveis.

dt_inicio <- data_atual

dt_fim <- data_atual + 6

 

e faz o select como tu fez

select * from tabela

where dt_nasc between dt_inicio and dt_fim

 

nas datas use só mês e dia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poww atualizar todo domingo serial trampo em!! mas daria certo..mas vlw pela dica velho!!!

Masss aí, já consegui fazer cara, de uma maneira mto simples...tipow, não consegui fazer com os aniversariantes da semana, mas sim com os do mês ou até mesmo com o do dia..então a solução seria a seguinte:

 

usar as funções DAY e MONTH e a CURDATE que retorna a data atual. Ficaria então desta forma:

 

SELECT * FROM tabela WHERE DAY(campo_datanasc) = DAY(CURDATE()) AND MONTH(campo_datanasc) = MONTH(CURDATE());

 

e pra buscar apenas aniversariantes do dia:

 

 

SELECT * FROM tabela WHERE MONTH(campo_datanasc) = MONTH(CURDATE());

 

Valeu galera, fica a dica para futuras dúvidas sobre o mesmo assunto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.