Peguei uma manutenção de um sistema PHP/MySQL pra fazer e surgiu a necessidade de ordenar determinada tabela pelo campo data, porém pra minha surpresa esse campo era do tipo VARCHAR() ao invés de DATE() ou DATETIME().
A data estava armazenada na tabela no formato "dd/mm/yyyy", exemplo:
Isso acontece porque se o campo é texto, ele começa a ordenar da esquerda pra direita em ordem alfanumérica, onde 04/12 é menor que 26/11, o que está errado, visto que em data a gente precisa levar em conta, em ordem de prioridade, ano-mês-dia.
Pra resolver esse problema sem ter de mexer na tabela (o que não tinha permissão pra fazer), use a função str_to_date() do MySQL:
SELECT str_to_date(data, '%d/%m/%Y') AS data FROM contas ORDER BY data;
[2] Comentário enviado por fabianoplanura em 06/02/2016 - 18:27h
Pessoal, sou novo aqui.
Estou precisando da ajuda de vocês e desde já agradeço a quem pudem dar alguma dica.
Gostaria de saber como faço para usar uma variável para busca com essa função: SELECT str_to_date(data, '%d/%m/%Y') AS data FROM contas ORDER BY data;
Segue meu codigo:
$query_rs_licitacoes = "SELECT * FROM tb_licitacoes WHERE tb_licitacoes.descricao LIKE '%$busca%' OR tb_licitacoes.data = '$busca' OR tb_licitacoes.modalidade = '$busca' ORDER BY data DESC";
Desse jeito não está ficando em ordem decrescente e tentei de várias maneiras inserir o Select str_to_date aí junto e não deu certo.
Para mostrar somente a coluna data dá certo, mas preciso que exiba as outras também. Alguém tem alguma idéia.
Depois pretendo usar um echo transDate para inverter a data para ficar ddmmyyyy.