Jump to content


Photo

Como Selecionar O Proximo Mês


  • Faça o login para participar
3 replies to this topic

#1 alexpfo

alexpfo

    Turista

  • Usuários
  • 41 posts
  • Sexo:Masculino
  • Localidade:Passo Fundo - RS
  • Interesses:Clientes para desenvolvimento de sites e parcerias.

Posted 22/08/2008, 16:37

uso este select para pegar os dados do mês atual:
"SELECT * FROM tab_agenda WHERE MONTH(age_data)=MONTH(NOW()) ORDER BY age_data ASC"


só que queria que ao mesmo tempo de pegar o mês atual, pegasse tbm o proximo mês automaticamente.



Fico no aguardo.



Obrigado

#2 tramandaclub

tramandaclub

    Normal

  • Usuários
  • 93 posts
  • Sexo:Masculino

Posted 25/08/2008, 11:29

"SELECT * FROM tab_agenda WHERE MONTH(age_data)=MONTH(NOW()) and MONTH(age_data)=MONTH(NOW())+1 ORDER BY age_data ASC"

Assim eu acho que rola

#3 alexpfo

alexpfo

    Turista

  • Usuários
  • 41 posts
  • Sexo:Masculino
  • Localidade:Passo Fundo - RS
  • Interesses:Clientes para desenvolvimento de sites e parcerias.

Posted 09/09/2008, 13:58

"SELECT * FROM tab_agenda WHERE MONTH(age_data)=MONTH(NOW()) and MONTH(age_data)=MONTH(NOW())+1 ORDER BY age_data ASC"

Assim eu acho que rola



Testei todas as opções e nenhuma deu certo, aceita os comandos mas não me retorna nada.

#4 piuiabacaxi

piuiabacaxi

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 13/09/2008, 23:46

Seguindo a sua lógica seria

WHERE MONTH(age_data) = MONTH(NOW() + INTERVAL 1 MONTH)

Contudo, como você tá usando a função month() na coluna da tabela, todos os rows precisarão ser lidos para que o mês seja extraído e a partir daí o critério ser avaliada.

Pra evitar isso, você pode tentar:

WHERE age_data BETWEEN NOW() + INTERVAL 1 MONTH - INTERVAL DAY(NOW() + INTERVAL 1 MONTH) - 1 DAY AND LAST_DAY(NOW() + INTERVAL 1 MONTH)

Sendo NOW() + INTERVAL 1 MONTH - INTERVAL DAY(NOW() + INTERVAL 1 MONTH) - 1 DAY uma forma de pegar o primeiro dia do mês que vem; e LAST_DAY(NOW() + INTERVAL 1 MONTH) o último dia do mês que vem.

Essas funções são avaliadas só 1 vez na query, que acabaria sendo executada assim:

WHERE age_data BETWEEN '2008-10-01 23:42:39' AND '2008-10-31'

Se o campo age_data for datetime ao invés de date, você vai precisar de mais algumas mandingas pra transformar a hora da primeira data em 00:00:00 e da segunda em 23:59:59.

Divirta-se!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq