Agora que você já sabe como fazer para obter os aniversariantes do mês em PostgreSQL, vou ensinar você como filtrar com um comando SQL simples os aniversariantes do mês no MySQL.
Para nosso exemplo, iremos criar uma estrutura com uma tabela, bem simples, onde iremos inserir os registros como se fosse uma tabela com as pessoas e suas respectivas datas de nascimento, após, com uso da função nativa month, localizaremos os aniversariantes, seja do mês atual ou qualquer outro mês do ano.
1º – Estrutura de tabela dos aniversariantes do mês em MySQL:
Create Table aniversariantes
(
id_aniversariante bigint,
nome varchar(50),
dt_nascimento date
);
2º – Inserindo registros e suas datas de nascimento:
Insert Into aniversariantes(id_aniversariante,nome,dt_nascimento)
Values(1,'Aniversariante 1','2012-01-01')
,(2,'Aniversariante 2','2012-02-01')
,(3,'Aniversariante 3','2012-03-01')
,(4,'Aniversariante 4','2012-04-01')
,(5,'Aniversariante 5','2012-05-01')
,(6,'Aniversariante 6','2012-06-01')
,(7,'Aniversariante 7','2012-07-01')
,(8,'Aniversariante 8','2012-08-01')
,(9,'Aniversariante 9','2012-09-01')
,(10,'Aniversariante 10','2012-10-01')
,(11,'Aniversariante 11','2012-11-01')
,(12,'Aniversariante 12','2012-12-01');
3º – Consulta SQL para encontrar os aniversariantes do mês:
Select *
From aniversariantes
Where Month(dt_nascimento) = Month(Now());
Pronto, muito simples!
De modo a complementar sua query, você pode filtrar os aniversariantes do dia atual, pra isto, adicione uma condição and ali com a função day, vejamos:
Select *
From aniversariantes
Where Month(dt_nascimento) = Month(Now())
and day(dt_nascimento) = day(Now());Bom, fico por aqui, esperando mais uma vez ter sido útil, um grande abraço e até a próxima.

Fabiano, parabéns pelo blog, acabei de conhecer e gostei bastante de suas dicas, gostaria de aproveitar a oportunidade para te perguntar se seria possivel, e se por acaso for, como por exemplo retornar um registro nulo ou simplesmente zero se por acaso no intervalo de datas não houvesse nenhum registro de aniversariantes no mes de agosto por exemplo, só pra você entender melhor, estou usando um select semelhante para me retornar a qtd de registros nos grupos dos meses para alimentar um gráfico, ai no mes que tem os registro retornar o numero mais o registro até ai tudo bem, só que eu queria retornar o mês nulo como nenhum registro, o intervalo entre as datas, espero que tenha entendido, e mais uma vez parabéns!
Olá Marconi,
Imagino que de posse das informações irá gerar um gráfico, me corrija se estiver errado, mas você poderá fazer o seguinte.
Select
(Select ifnull(count(id_aniversariante),0) from aniversariantes
where month(dt_nascimento) = 1) As 'Janeiro'
,(Select ifnull(count(id_aniversariante),0) from aniversariantes
where month(dt_nascimento) = 2) As 'Fevereiro'
,(Select ifnull(count(id_aniversariante),0) from aniversariantes
where month(dt_nascimento) = 3) As 'Março'
,(Select ifnull(count(id_aniversariante),0) from aniversariantes
where month(dt_nascimento) = 4) As 'Abril'
,(Select ifnull(count(id_aniversariante),0) from aniversariantes
where month(dt_nascimento) = 5) As 'Maio'
…
Veja se é isto que deseja, grande abraço e obrigado.
Olá,
Como eu faria para mostrar apenas do dia?
Grato.
Caro 'Anônimo',
Ao invés de usar a função Month, use a função Day, desta forma:
Select *
From aniversariantes
Where Day(dt_nascimento) = Day(Now());
Abraços.
Obrigado, Fabiano!
Obrigado Ajudou Muito 🙂
Olá Teste,
Eu que agradeço o feedback.
Abraços.
Como fazer para não mostrar o ano, nesta situação?
Amigo,
Se o "não mostrar o ano" for no resultado do select, use as funções day(campo), para mostrar o dia e, month(campo) para mostrar o mês.
Ex:
Select day(campo), month(campo) from…
Abraços e obrigado pela visita
FEITO!
Obrigado, Fabiano.
Me ajuda no aperfeiçoamento:
SELECT MONTH( "Nascimento" ), DAY( "Nascimento" ), "Nome", "Email" FROM "CC – Cadastro Geral" WHERE MONTH( "Nascimento" ) = MONTH( NOW( ) ) ORDER BY DAY( "Nascimento" )
Como fazer para o MONTH ser solicitado na hora de execução da consulta?
Carlos Alberto
Carlos,
Se você estiver usando uma stored procedure, e nela está passando os mês como parâmetro de entrada, troque o now() do MONTH( NOW( ) ) pelo parâmetro, se for uma consulta, ao invés da variável MONTH, passe o mês desejado.
Em caso de dúvidas, poste aqui.
Abraços.
Em 2017 primeira vez que precisei usar essa função, muito obrigado cara por compartilhar seu conhecimento.