lote14 0 Denunciar post Postado Dezembro 1, 2010 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
Motta 645 Denunciar post Postado Dezembro 1, 2010 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
lote14 0 Denunciar post Postado Dezembro 2, 2010 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
William Bruno 1501 Denunciar post Postado Dezembro 2, 2010 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
lote14 0 Denunciar post Postado Dezembro 2, 2010 é, 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
Motta 645 Denunciar post Postado Dezembro 2, 2010 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
lote14 0 Denunciar post Postado Dezembro 3, 2010 ixi... cara, já tive esse problema uma vez.. e o que você fez? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 3, 2010 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
lote14 0 Denunciar post Postado Dezembro 4, 2010 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
lote14 0 Denunciar post Postado Dezembro 5, 2010 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