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

Ajuda em uma consulta simples


Xenofonte

Pergunta

Estou fazendo uma consulta SQL, mas não estou conseguindo organizar da data menor para a maior.

a consulta é essa:

select distinct Convert(varchar,DATA,103) from agenda where turma = 'xxx'

resultado que aparece:

01/06/2009

04/05/2009

08/06/2009

11/05/2009

15/06/2009

como que faço para organizar essa consulta?

quero que o resultado obtido pelo select seja esse:

04/05/2009

11/05/2009

01/06/2009

08/06/2009

15/06/2009

ou seja, da menor para a maior data.

Acredito que seja simples, porém não ta dando certo.

agradeço quem puder ajudar

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

eu tentei isso ne ;P mas não da certo

eu fiz isso aqui:

select distinct Convert(varchar,DATA,103) data from ly_agenda where turma = 'CEAHR_N1' and disciplina = '7266-31' and ano = 2009 and semestre = 1 and num_func = '5' order by data

mas ele só organiza o dia.

O mês não fica ordenado.

ex: fica assim:

01/06/2009

04/05/2009

08/06/2009

11/05/2009

15/06/2009

18/05/2009

;/

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

  • 0

Bom dia Amigo,

O problema é q o sql realiza a conversão e depois a ordenação. Sendo assim, o sql não ordena como data, mas sim realiza uma ordenação por caracteres... por isso q apenas os dias estão ordenados.

Uma duvida: na gravação das datas existe apenas a data, ou tem também hora / min / seg.?

Quando você insere apenas a data no campo datetime, o sql completa com 00:00:00. Se este for o seu caso, você pode fazer um distinct sem a conversão, ok? O resultado será ordenado normalmente, e no fonte do seu aplicativo, antes da exibição dos dados, você fará a formatação da data (colocará DD/MM, ou MM/DD, retirará os zeros, etc).

Caso a gravação dos dados na base tenha hora / min / seg., ai o distinct não funcionará... :.)

Se este for o caso, posta aí q a gente resolve. Espero ter ajudado!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Deu certo.

tava ordenando pela string convertida

fiz assim,

select distinct Convert(varchar,DATA,103) data, data as real_data from ly_agenda where turma = 'CEAHR_N1' and disciplina = '7266-31' and ano = 2009 and semestre = 1 and num_func = '5' order by real_data

Brigadão pela ajuda!

valeu!

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

  • 0

É.... ai vai ter q fazer duas conversões.... :.)

você converte pra data no formato dd/mm/yy (que o 103). O Sql retira os campos de hora/min/seg. Depois você converte novamente pra data, ordenando.

Coloquei a alteração logo abaixo. Roda aí e depois me fala se deu certo!!!

select distinct convert (Datetime,(convert (varchar,data, 103)), 103) data

from ly_agenda where turma = 'CEAHR_N1' and disciplina = '7266-31' and ano = 2009

and semestre = 1 and num_func = '5' order by data

Assim também funciona. Mas o resultado virá com o dobro do tamanho. Caso este ponto seja irrelevante no contesto do aplicativo, beleza!!! :.)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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