mmillers 1 Denunciar post Postado Janeiro 2, 2014 Bom dia pessoal, estou querendo fazer um select no banco para pegar os textos das datas pertencentes ao mês atual ou a um mês passado por uma variável qualquer. Eu pensei em algo do tipo select texto from tabela where data ? texto e data são atributos do banco e o ponto de interrogação é porque não sei o que fazer para verificar. Agradecido desde já. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 2, 2014 Tente a lógica passada por você :natalwink: Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Guima 164 Denunciar post Postado Janeiro 2, 2014 Isso é uma dúivda MySQL, não PHP. Use BETWEEN, sendo sua coluna datetime. Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 2, 2014 se eu usar between não vai dar certo, porque ficaria "select texto from tabela where data between 01/01/2014 and 31/01/2014" e não é isso que eu quero. Quero passar por exemplo, passo mês 04 e essa select me retorna os texto pertencentes ao mês 4, visualizo e depois passo o mês 5 e depois o 2 e por ai vai... Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Guima 164 Denunciar post Postado Janeiro 2, 2014 Você pode utilizar a função MONTH(), mas você terá problemas por conta de não passar o ano na consulta. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 2, 2014 NÃO vai funcionar apenas com o MONTH() e você não terá problemas se utilizar a função corretamente, tem que utilizar o MOD e o CURDATE em conjunto. Faça por exemplo, para exibir os textos deste mês, faça isso. SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH(CURDATE()), 12) Quando quiser especificar o mês e o ano, passe por get os valores, ficando assim: $mes = (int)$_GET['mes']; $ano = (int)$_GET['ano']; $query = "SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH('$ano-$mes-01'), 12) Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 2, 2014 NÃO vai funcionar apenas com o MONTH() e você não terá problemas se utilizar a função corretamente, tem que utilizar o MOD e o CURDATE em conjunto. Faça por exemplo, para exibir os textos deste mês, faça isso. SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH(CURDATE()), 12) Quando quiser especificar o mês e o ano, passe por get os valores, ficando assim: $mes = (int)$_GET['mes']; $ano = (int)$_GET['ano']; $query = "SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH('$ano-$mes-01'), 12) Abraços. Isso mesmo que eu queria mas não sabia como fazer, muito obrigado. :natalsmile: Porém nos meu testes a segunda opção, onde eu passo o ano e mês por get a função não leva em conta o ano passado e pega de todos os anos somente de acordo com o mês, só preciso arrumar isso pode me ajudar? Grato. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 2, 2014 Em qual formato você está passando o ANO para variável ? Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 2, 2014 Em qual formato você está passando o ANO para variável ? Assim ano=<?php date("Y"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Janeiro 3, 2014 então adicione o ano na condicional... qual a dificuldade nisso? Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 3, 2014 então adicione o ano na condicional... qual a dificuldade nisso? mas a maneira que você me passou(código abaixo) ele valida somente o mês deixando o ano passar. $mes = (int)$_GET['mes']; $ano = (int)$_GET['ano']; $query = "SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH('$ano-$mes-01'), 12) como eu acrescento o ano na minha query para que seja verificado também? Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Guima 164 Denunciar post Postado Janeiro 3, 2014 Eu avisei... Dá uma olhada: http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 3, 2014 Eu avisei... Dá uma olhada: http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html Não foi aviso, foi informação mal passada. Vamos estudar mais um pouquinho. @hinom, adorei sua assinatura rsrsrsrs. mmillers, basta criar 2 selects, com o mês, 01,02,03 etc e com com a data em formato 2012,2013,2014. Ele vai puchar os registros de acordo com o mês e o ano. Ele não vai puchar só pelo ano e nem só pelo mês, se quiser isso terá que fazer outra condição. Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 3, 2014 Eu avisei... Dá uma olhada: http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html Não tinha visto, desculpa. Vendo agora pensei em fazer uma única select desta maneira: $mes = (int)$_GET['mes']; $ano = (int)$_GET['ano']; $query = "SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH('$ano-$mes-01'), 12) AND YEAR(campo_data) = MOD(YEAR('$ano-$mes-01'))" Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 6, 2014 Não tinha visto, desculpa. Vendo agora pensei em fazer uma única select desta maneira: $mes = (int)$_GET['mes']; $ano = (int)$_GET['ano']; $query = "SELECT * FROM tabela WHERE MONTH(campo_data) = MOD(MONTH('$ano-$mes-01'), 12) AND YEAR(campo_data) = MOD(YEAR('$ano-$mes-01'))" Alaerte Gabriel , está sql não funciona como eu poderia fazer usando 2 selects? Compartilhar este post Link para o post Compartilhar em outros sites