Ajudinha SQL

Bah…to com um probleminha…me ajudem!
Tenho um banco de dados e uma tabela aluno.
Nesta tabela tenho um atributo data_nascimento, que declarei como uma String. Só que agora to precisando ordenar uma consulta SQL pela data de nascimento e o ORDER BY não tá funcionando direito…o que fazer?!

Posta teu código aqui.
Qual o banco vc está usando?

Se o seu banco suportar a função substring, tente:

select data_nascimento,substring(data_nascimento,07,04)+substring(data_nascimento,04,02)+substring(data_nascimento,01,02)
order by 2

Obs: estou supondo a data no formato: dd/mm/aaaa

Veja se seu banco permite a utilização de alguma função p/ formatação da data.

[color=“red”]Ex.: No Oracle a função é o TO_DATE[/color]

T+.

o Banco é o Mysql…
Eu acho que eu poderia utilizar isso MHudson, porém nos dias antes de 10, eu ratiei e coloquei por exemplo 1/10/2004, e deveria ser 01/10/2004. Em 1º lugar eu deveria ajeitar isso. Mas como?

E tipo, este teu SQL não ta funcionando muito bem, pois fiz alguns testes aqui e não funcionou.

Olá!
No MySQL vc tem a função DATE_FORMAT() que permite a formatação de datas. Tem um manual com a sintaxe da função no site do MySQL, não lembro muito bem como funciona, mas sei que vc pode passar parametros que lhe permite disponibilizar a data da forma que vc quiser!

Abraços.

Não cara…vocês não estão me entendendo!
Meu banco já está povoado, porém todas as datas estão em formato String. Ex: 12/05/2004…se eu der um “ALTER TABLE tal MODIFY data DATE” por exemplo, essas datas que já casdastrei vão tornar-se 0000-00-00. E isso não pode ocorrer!

E dai? Como que posso resolver isso? Talvez nem precise tranformar em DATE, pode ser que há um SQL que coloque as datas em ordem mesmo sendo Strings. Eu não sei =(

mdtorbis,

O que na verdade estamos lhe dizendo é que você pode colocar no seu select a função [color=“red”]DATE_FORMAT() [/color]e validar o resultado como sendo data e não dar um ALTER TABLE na tabela.

T+.

Sim Sim…eu entendi!

Mas quero saber se eu posso dar um SELECT DATA_FORMAT sobre um String! E como fazer isso?

Não conheço muito o MySQL mas tente desta forma:

SELECT DATE_FORMAT(NOME_CAMPO, 'DD/MM/YYYY') FROM NOME_TABELA

Faça um teste e nos retorne.

T+.

tenta isto!
order by to_date(nome do campo,‘dd/mm/yyyy’)

Valeu pela ajuda gurizada, mas:
dougnard, desta forma que tu fez, o mysql indica erro na sintaxe;
Green_Beret, desta forma, os valores dos campos retornam todos como null;

Continuem dando dicas ai por favor =)

Olá de novo!
Pelo q eu entendi, vc colocou a sua string de data no seguinte formato dd/mm/aaaa, porém o MySQL tem como padrão aaaa-mm-dd.
Então eu te indico esse link: http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html, pois nele está todas as formas de como vc pode usar o DATE_FORMAT().
Leia a tabela de formatos q ela irá te ajudar…
Espero ter ajudado

[]'s

se vc seleciona o date_format do campo string da tabela, o q ocorre?

Ae gurizada! Valeu pelas dicas aqui, mas já consegui fazer…

Obrigado!

Oi mdtorbis !!

Posta a solução que encontrou dizendo o que fez ou enviando o código… Assim ajuda quem pode ter este problema também… blz?

Bem…primeiro criei uma nova coluna na tabela, para poder migrar os dados:

ALTER TABLE aluno ADD nascimento DATE;

Depois tranferi os dados:

UPDATE aluno SET nascimento = CONCAT(SUBSTRING(data_nascimento,7,4),'-', 
SUBSTRING(data_nascimento,4,2),'-', 
SUBSTRING(data_nascimento,1,2));

E por último apaguei a antiga coluna (data_nascimento), que está em formato String.

ALTER TABLE aluno DROP data_nascimento;

Feito?![/code]

Você acabou tendo que mudar o atributo mesmo.

Será que não tinha outra alternativa?

T+.

Mas puxa…tu quer algo + simples que isso?