Ir para conteúdo
Fórum Script Brasil
  • 0

pesquisa ordenada


Carlos Rocha

Pergunta

Ola pessoal.

Tenhoi uma tabela mysql onde 1 dos campos é "data", porem, ele foi criado como varchar e não como date.

acontece que agora preciso ordenar (order by) os registros da tabela debitos por ordem de data e não estou conseguindo fazer.

Pelo que sei, antes de fazer a consulta, tenho que partir o registro em : 03/10/2008 para 03 10 2008 e ordenar de traz pra frente 2008/10/03 mas não tendo ideia.

alguém tem alguma forma melhor de fazer isso?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Oi,'Carlos Rocha'

Se sua data tem dez posições, tipo dd/mm/aaaa, você pode usar a função substring para obter o que deseja.

Exemplo: concat(substring(minhadata, 7,4), '-', substring(minhadata,4,2),'-',substring(minhadata,1,2))

Link para o comentário
Compartilhar em outros sites

  • 0

O problema é o seguinte:

eis meu código:

<?php
if ($acao == "visualiza_acoes") 
{
$tab_debitos = mysql_query("select * from debitos where devedor = '$id_devedor'" order by datadoc);

$tab_debitos_count = mysql_num_rows($tab_debitos);
?>
<h2>D&eacute;bitos</h2>
<?     
if ($tab_debitos_count == 0 ) { 
?>
<table class="listaValores" width="580">
    <tr><td>Ainda não há Débitos cadastrados para esse devedor</td></tr>
</table>
<?
}
    else                      { ?>
<table class="listaValores" width="580">
<tr>
    <td align="center">Documento</td>
    <td align="center" colspan="2">Valor(R$)</td>
    <td align="center">Tipo</td>
    <td align="center">Data de Cadastro</td>
    <td align="center">Vencimento</td>    
    <td align="center">Status</td>
    <td align="center">Alterar</td>    
    <td align="center">Excluir</td>        
</tr>
<?php while(list($id, $documento, $valor, $tipo, $data, $datadoc, $status) = mysql_fetch_row($tab_debitos)) { 
$data=implode('/',array_reverse(explode('-',$data)));
?>
<tr class="even">
    <td align="center"><?=$documento;?></td>
    <td align="center"><?=$valor;?></td>
    <td align="center"><a href="java script: juros('juros.php?valor=200,00&dia1=01&mes1=04&ano1=2008&sys_juros=1');"><img src="../imagens/imagens_index/calculator.png" width="19" height="16" border="0"></a></td>
    <td align="center"><?=$tipo;?></td>
    <td align="center"><?=$data;?></td>
    <td align="center"><?=$datadoc;?></td>    
    <td align="center"><?=$status;?></td>
    <td align="center"><a href="?acao=editar_debito&id=<?=$id; ?>&id_devedor=<?=$id_devedor; ?>&id_cliente=<?=$id_cliente; ?>&nome_cliente=<?=$nome_cliente;?><?=$rasao_cliente;?>&nome_devedor=<?=$nome_devedor?><?=$rasao_devedor?>"><img src="../imagens/site/edit.gif" alt="Modificar" border="0" hspace="5" /></a></td>
    <td align="center"><a href="?acao=excluir_debito&id=<?=$id; ?>&id_devedor=<?=$id_devedor; ?>&id_cliente=<?=$id_cliente; ?>&nome_cliente=<?=$nome_cliente;?><?=$rasao_cliente;?>&nome_devedor=<?=$nome_devedor?><?=$rasao_devedor?>" onclick='return verifica()'><img src="../imagens/site/edit.gif" alt="Modificar" border="0" hspace="5" /></a></td>    
</tr>
<? }} ?>
</table><br />

Mais ´precisamente o iniio do código.

Eu quero ordenar assim:

...

01/02/2007

05/10/2007

09/02/2008

..

Mas esta ordenando assim:

...

09/02/2008

01/02/2007

05/10/2007

..

Como saio dessa?

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0

Outras coisa é o seguinte:

puz o código abixo

$tab_debitos = mysql_query("select * from debitos where devedor = '$id_devedor' order by cast(datadoc as date)");
E olha o que retornou:
48921 A 547,02  Boleta 11/08/2008 31/08/2004 Aberto   
51494 A 401,33  Boleta 11/08/2008 25/11/2004 Aberto   
53578 A 399,72  Boleta 11/08/2008 07/12/2004 Aberto   
53579 A 399,72  Boleta 11/08/2008 17/12/2004 Aberto   
54071 A 352,39  Boleta 11/08/2008 17/12/2004 Aberto   
53588 A 399,73  Boleta 11/08/2008 27/12/2004 Aberto   
53582 A 329,34  Boleta 11/08/2008 01/01/2005 Aberto   
54072 A 352,38  Boleta 11/08/2008 06/01/2005 Aberto   
55230 A 321,30  Boleta 11/08/2008 24/02/2005 Aberto   
52362 A 821,62  Boleta 11/08/2008 16/11/2004 Aberto   
52361 A 426,67  Boleta 11/08/2008 14/11/2004 Aberto   
52142 A 518,54  Boleta 11/08/2008 13/11/2004 Aberto   
49305 A 469,11  Boleta 11/08/2008 07/09/2004 Aberto   
49893 A 304,06  Boleta 11/08/2008 11/09/2004 Aberto   
48704 A 326,57  Boleta 11/08/2008 13/09/2004 Aberto   
50848 A 438,10  Boleta 11/08/2008 13/08/2004 Aberto   
50853 A 401,26  Boleta 11/08/2008 12/10/2004 Aberto   
49578 A 244,34  Boleta 11/08/2008 14/10/2004 Aberto   
51491 A 462,64  Boleta 11/08/2008 26/10/2004 Aberto   
51493 A 401,34  Boleta 11/08/2008 26/10/2004 Aberto   
401,26               Boleta 11/08/2008 02/10/2004 Aberto

Não esta ordenando dierito por datadoc

Obs.: o campo datadoc foi criado como varchar no MySql

Como resolo isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Carlos,

Você precisa estudar mais sobre SQL e ler o Manual do MySQL. No post eu já respondi o que você pediu, mas como você não entendeu, e aproveitando um dos códigos SQL que você enviou, vou te passar a solução detalhadamente.

Este foi o código SQL que você enviou no post #5

select * from debitos where devedor = '$id_devedor'" order by datadoc
Esta foi a resposta que passei no post #4
concat(substring(minhadata, 7,4), '-', substring(minhadata,4,2),'-',substring(minhadata,1,2))
Juntando os dois teremos:
select * from debitos where devedor = '$id_devedor'" order by concat(substring(datadoc, 7,4), '-', substring(datadoc,4,2),'-',substring(datadoc,1,2))

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...