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

Como Selecionar O Proximo Mês
Started By alexpfo, 22/08/2008, 16:37
3 replies to this topic
#1
Posted 22/08/2008, 16:37
#2
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
Assim eu acho que rola
#3
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
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!
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)