Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Não sei o que está acontecendo.
Tenho um campo data onde tem as seguintes datas, por exemplo:
31/3/2010
4/1/2010
Mas ele não fica na ordem decrescente
Minha SQL está: SELECT * FROM noticias order by datar desc, codigo desc
Aí funciona normal o mês 3
31/3/2010 - certo
30/03/2010 - certo
4/1/2010 - errado, ele deveria ser o primeiro já que é mês 4
Por que ocorre isso? Como faço para manter na ordem decrescente quando aparecer o novo mês?
O campo está como datatime e uso SQL Server 2000
Como voce esta gravando as datas no banco?
Verifique se esta diferente do formato correto.
>
pelo q você escreveu é mes 1
>
31/3/2010 - certo
30/03/2010 - certo
4/1/2010 - errado, ele deveria ser o primeiro já que é mês 4
e se é decrescente tá certo
Esse manja.
Se seu campo estiver como Text ou Varchar ou coisa do tipo, não vai funcionar.
Como seu campo é data, tem que ser Datetime. Quando for criar campos na base de dados, crie com seus tipos respectivos, porquê você não terá problemas no futuro, como talvez você esteja agora.
Se quiser consertar agora faça um Cast:
Select * From Noticias Order By Cast(Data as Datetime) Desc
Select Cast(Data as Datetime), * From Noticias Order By Campo_Data Desc
Agora se você quiser tornar a coisa mais fácil nos seus projetos, você muda o tipo do campo para DateTime.
Isso deve ser então na hora de cadastrar que está indo errado?
No campo do formulário a pessoa digia 01/04/2010
E no insert:
dia = day(vdata)
mes = month(vdata)
ano = year(vdata)
data_sql = ano & "-" & mes & "-" & dia
executar = "insert into noticias (conteudo, data, fonte, titulo, datar) values ('"& VarDesc &"','"& vdata &"','"& vfonte &"','"& vtitulo &"','"& data_sql &"')"
O problema está na formatação da data então?
31/3/2010 está certo, que é dia 31 de março de 2010
Agora 4/1/2010 está errado, realmente. Pois o certo é 1/4/2010, dia 1, mês 4 e ano 2010
Acho que resolvi colocando o Session.LCID = 1046 Para ficar padrão no Brasil, obrigado!
Ótimo, mas mesmo assim verifique o insert para ver se ta cadastrando corretamente o formato da data.
pelo q você escreveu é mes 1
>
31/3/2010 - certo
30/03/2010 - certo
4/1/2010 - errado, ele deveria ser o primeiro já que é mês 4
e se é decrescente tá certo