Ir para conteúdo

POWERED BY:

Arquivado

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

Fran

[Resolvido] Ordenação pelo mês

Recommended Posts

Como faço para consultar do banco (mysql), de modo que o resultado venha ordenado pelo mês ??? (jan,fev,mar, ...)

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT * FROM tabela ORDER BY data DESC

Obs.: Usando campos DATE ou DATETIME.Para pegar registros apenas de um mês especifico:

SELECT * FROM tabela WHERE MONTH(campo) = '12'

No exemplo acima foi usado o mês 12.Para o mês atual use:

MONTH(campo) = MONTH(NOW())

Assim ele compara o mês dos campos com o mês atual. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pelas respostas, no entanto não resolve o problema. Vou explicar porque: no php eu faço uma busca por data assim:$vSql = "SELECT * FROM tb_cota WHERE data= '$data' "; (mostrar tudo que tem na tabela tb_conta na data referente a data de 18-07-2005)Essa tabela tb_cota tem um campo chamado MES. Gostaria que que a busca sql viesse ordenado por esse campo MES. Se colocar ORDER BY DATA não funciona porque estou buscando apenas uma data em especifico e nao um intervalo de datas, se colocar ORDER BY NAME, obviamente vai buscar por ordem alfabetica. Então ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo!

 

Obrigada pela resposta, mas não é possivel, pois se ordenar pelo mes vai acontecer duas coisas: vai ficar ordenado pelo id ou por ordem alfabetica. Em vez de jan, fev, mar, abril vai ficar: abril, fev, jan, mar ...

 

Enfim, fiz um "quebra galho" assim: no form do html coloquei numeros na frente dos meses ficou assim: 1 jan, 2 fev, 3 mar , etc. daí sim, vai funcionar ORDER BY MES ... depois, na hora de mostar a consulta é só esconder os numeros da frente ...

 

Até aparecer uma solução, vou usar assim mesmo!

 

Obrigada a todos !!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, 1- a procura é PELA DATA, não pode ser pelo mês2 - a tabela sql é assim: id....mes.....compromisso....acumulado.....perct.....qtdade...valor..........data 72---Junho-------115----------------36---------31--------16------90------2005-07-18 73---Abril---------105---------------99---------94--------10------20------2005-07-18 74---Março-------107--------------100---------93--------07-----100------2005-07-18 Então, primeiramente eu procuro pela data, informo no combo "2005-07-18"Faço a consulta: $vSql = "SELECT * FROM tb_cota WHERE data= '$data' "; E quero que a consulta me retorne assim: Março ...Abril ...Junho ...Se eu colocar ORDER BY MES, retorna em ordem AFABETICA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quisesse ordenar pelo mês da coluna "data", você faria assim:

ORDER BY MONTH(data), mas não é esse o caso, né?...

 

O problema é que você tá salvando o mês num campo de caracteres (provavelmente o varchar). O ideal no seu caso é salvar num campo do tipo integer(2)... aí a ordenação vai vir correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você quisesse ordenar pelo mês da coluna "data", você faria assim:

ORDER BY MONTH(data), mas não é esse o caso, né?...

 

O problema é que você tá salvando o mês num campo de caracteres (provavelmente o varchar). O ideal no seu caso é salvar num campo do tipo integer(2)... aí a ordenação vai vir correta.

<{POST_SNAPBACK}>

Se o seu campo de data for realmente uma string e estiver no formado dd/mm/yyyy você pode fazer a ordenação assim:

 

"SELECT * FROM tb_contas ORDER BY mid(campo_data,4,2) DESC"
Este exemplo funciona em Access e Sql Server que aceitam a função MID, que faz uma substring. Em outros bancos, procurar uma função equivalente.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Se o seu campo de data for realmente uma string e estiver no formado dd/mm/yyyy você pode fazer a ordenação assim:

 

"SELECT * FROM tb_contas ORDER BY mid(campo_data,4,2) DESC"

 

Este exemplo funciona em Access e Sql Server que aceitam a função MID, que faz uma substring. Em outros bancos, procurar uma função equivalente.

 

Valeu pela explicação... não conhecia a função mid(). ;)

 

Mas no caso dele, não vai funcionar, tb... suba uns posts e veja como está a tabela dele. O campo "mes" salva o nome do mês... literalmente. Aí na hora que ele ordena, "abril" vem na frente de todos. Por isso que eu falei pra ele salvar como integer...

 

Não é difícil... é só você criar uma nova coluna na tabela... aí você monta uma cláusula SQL pra ir preenchendo essa nova coluna a partir do conteúdo da coluna "mes"... depois é só apagar a coluna com o nome dos meses... se precisar de ajuda pra fazer isso, posta aí!

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Illidan !!!

 

Você está certo, neste caso não vai funcionar porque O campo "mes" salva o nome do mês... literalmente. Aí na hora que ele ordena, "abril" vem na frente de todos.

E se eu salvar como integer(2), no hora de mostar isso no php vai vir 01 02 em vez de janeiro, fevereiro ...

 

Então, se você puder me ajudar a fazer essa claúsula, agradeço

 

Francine http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

 

Não é difícil... é só você criar uma nova coluna na tabela... aí você monta uma cláusula SQL pra ir preenchendo essa nova coluna a partir do conteúdo da coluna "mes"... depois é só apagar a coluna com o nome dos meses... se precisar de ajuda pra fazer isso, posta aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Fran... a sua dúvida é sobre como passar os valores pra um novo campo, ou como exibir o nome do mês pelo PHP a partir do número (por exemplo, se for 1 exibe janeiro, 2 exibe fevereiro, etc.) ???

 

Pra passar os dados para a nova coluna, é só você criar clásulas do tipo:

 

UPDATE tabela SET mes_integer = 1 WHERE mes = 'janeiro'

...

 

E assim por diante pra cada mês... é a maneira mais fácil que eu conheço de fazer isso.

 

Aí, pra exibir o nome do mês, é só criar uma função em PHP... se for 1, ela retorna "janeiro", 2 "fevereiro", e por aí vai... ;)

 

Abraço!

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.