Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131

Deprecated: A função WP_Dependencies->add_data() foi chamada com um argumento que está obsoleto desde a versão 6.9.0! Os comentários condicionais do IE são ignorados por todos os navegadores compatíveis. in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131
Aniversariantes do mês no MySQL

Aniversariantes do mês no MySQL

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.

12 comentários em “Aniversariantes do mês no MySQL”

  1. 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!

  2. 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.

  3. 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

  4. 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.

Deixe um comentário