Ir para conteúdo

POWERED BY:

Arquivado

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

lote14

[Resolvido] Ordenar data neste formato

Recommended Posts

Olá pessoal!

 

Tenho um banco MYSQL e nele possuo em uma tabela um campo de "data" que gravei em formato "string" já formatado para o padrão brasileiro "dd/mm/aaaa", este campo grava o último login do usuário.

 

A pergunta é o seguinte, como ordenar este campo?

 

Se estivesse no padrão americano,"aaaa-mm-dd", seria só "order by data desc" normalmente, certo.

 

Do jeito que já está formatado no banco "dd/mm/aaaa" a ordenação não exibe corretamente, exemplo:

 

americano:(order by data desc)

 

2010-12-01

2010-11-30

2010-11-29

 

brasileiro:(order by data desc)

 

30/11/2010

29/11/2010

01/12/2010 -----------> erro pois deveria ser o primeiro, mas como o dia "01" é menor que os outros dias exibe por último.

 

E ai alguém se atreve?

 

meu select:

 

select * from usuarios order by hora_ultimologin desc

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, use o formato DATE e use conversões apenas para exibições, resolve este tipo de problema.

 

Bastaria um simples order by data.

 

Exemplos vários neste sub-fórum mesmo, dê uma pesquisada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala amigo, MOTTA!

 

Acontece que já tenho mais de 10.000 registros gravados assim "02/12/2010" - formato brasileiro, se pudesse começar do zero eu gravaria a data como "date()" ordenava com "order by data" e exibiria com a mesma função que usei ERRADAMENTE para tranformar para formato brasileiro e gravar, como você mesmo falou.

 

Mas acontece que a "cagada" já está feita... e a pergunta ainda segue, existe a possibilidade de ordenar uma data neste formato "02/12/2010".

 

obs: MYSQL - ASP

 

Valeu MOTTA agradeço sua disponibilidade em ajudar!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixi... cara, já tive esse problema uma vez..

 

mesmo com muitos registros, se você rodar uma query de update, dá para 'arrumar'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, eu sei, mas têm outras tabelas também, queria evitar a FADIGA...rsrsr, mas se não tem como, o que se pode fazer?

 

valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente, no ORDER BY, usar uma função de conversão da data no formato string para date para para string mas no formato YYYYMMDD que resolveria o ordenamento mas não outros problemas.

 

Na minha opinião as tabelas deveriam ser ajustadas para usar o formato certo DATE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixi... cara, já tive esse problema uma vez..

 

e o que você fez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

criei uma nova coluna do tipo DATE

 

rodei uma query de UPDATE, 'convertendo' as datas da coluna 'errada' para a correta.

depois deletei a coluna varchar, e passei a trabalhar com o tipo certo de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Willian!

 

Tudo bem! você está certíssimo amigo! pois campo date está ai para isso, certo?

 

Mas vamos lá, aqui que mora o problema:

 

'convertendo' as datas da coluna 'errada' para a correta.

Você usou alguma função para converter, certo? da coluna errada "04/12/2010" para a coluna certa 2010-12-04, ok?

 

Se eu conseguir fazer esse procedimento nem precisaria rodar UPDATE, pois eu pegaria a coluna errada,e apenas exibiria e ordenaria da forma correta, tudo bem mesmo sabendo que o certo seria o que você falou.

 

Você têm essa função ainda contigo?

 

Só uma dúvida! é possivel rodar uma função "ASP" direto do código sql? se for pode dar um exemplo?

 

Depois de tantas perguntas só me resta agradecer, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse google é mesmo sinistro, achei a solução.

 

str_to_date(data_antiga,'%d/%m/%Y') as nova_data

Valeu galera pela ajuda!!!

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.