Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mmillers

comparação de datas

Recommended Posts

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

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

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

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

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

 

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

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

 

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.