Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso selecionar os aniversariantes dos próximos dois meses, a estrutura é a seguinte:
um usuário possui uma tela para cadastrar seus clientes e tem o campo aniversario somente com dia e mês,
seria mais fácil salvar esses dados em colunas separadas ou não? Depois consigo realizar operações com datas? alguma sugestão?
shini fiz com date, concatenei uma variavel zerada para o ano e inseriu certinho, tem alguma sugetão de função para selecionar os aniversariantes dos próximos dois mêses?
obs: não coloquei campo para o ano porque ficaria desagradavel para alguns clientes.
Por enquanto obrigado. valeu cara
select * from <tabela> where month(data) between month(now()) and month(now())+1
isso?
O que passo no parametro data do month(data)?
a data atual completa? ou so o mes?
minhas data estao assim 0000-09-13 por exemplo, na coluna aniversario
passa o campo com a data.
esta assim SELECT nome_completo, aniversario, tel_residencial, celular, email FROM clientes WHERE month('2013-07-10') between month(now()) and month(now())+1
mas ta retornando todos
Não teste, mas....
WHERE aniversario BETWEEN MONTH(aniversario) AND MONTH(DATE_ADD(CURDATE(),INTERVAL 2 MONTH));
Só teria que testar isto na mudança de ano também.
valeu pela ajuda fiz uma concatenação das duas sugestões e deu certo
SELECT nome_completo, aniversario, tel_residencial, celular, email FROM clientes WHERE month(aniversario) between month(now()) and month(now())+1
month(now())+1 ?
Você já parou para pensar o que vai acontecer em dezembro? 12+1 ?
kkkk havia pensado antes mas depois esqueci achando que havia resolvido, de volta ao laboratório rsrs obrigado
vamos tentar com interval.
SELECT nome_completo, aniversario, tel_residencial, celular, email FROM clientes WHERE aniversario BETWEEN MONTH(aniversario) AND MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH))
não encontro o erro já olhei no manual curdate = data atual
date_add = adicionou 1 mes na data atual
Alguma sugestão?
fiz assim mas traz mais resultados
SELECT nome_completo, aniversario, tel_residencial, celular, email FROM clientes WHERE month(aniversario) BETWEEN MONTH(aniversario) AND MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH))
acho que foi erro de lógica rsrsr
SELECT nome_completo, aniversario, tel_residencial, celular, email FROM clientes WHERE month(aniversario) BETWEEN MONTH(CURDATE()) AND MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH))
a query completa ficou assim
SELECT nome_completo, aniversario, tel_residencial, celular, email FROM clientes WHERE id='$id_usuario' AND month(aniversario) BETWEEN month(curdate()) AND month(date_add(curdate(), interval 1 month)) ORDER BY aniversario
aberto a sugestões valeu!!!!!!!!!!!
salva como date yyyy-mm-dd, depois no sql vc formata para pegar somente o mes.
no mysql vc usa month(campo)
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month