Ordenar Campo por data
Fala Galera.
Tenho Um campo em meu banco de dados que é Varchar e ele recebe data, ai eu tenho que mostrar esse campo ordenado por data, tipo a tada menor para data maior mas quando eu coloco ´order by data´ ele ordena pelo dia só e eu queria ordenar pela dia , mês e ano.
Alguem poderia me ajudar.
Vleu
Tenho Um campo em meu banco de dados que é Varchar e ele recebe data, ai eu tenho que mostrar esse campo ordenado por data, tipo a tada menor para data maior mas quando eu coloco ´order by data´ ele ordena pelo dia só e eu queria ordenar pela dia , mês e ano.
Alguem poderia me ajudar.
Vleu
Cleiflavio
Curtidas 0
Respostas
Cleiflavio
30/04/2009
Galera faltou uma OBS.
Uso Firebird 2.0 Interbase, Delphi e IbExpert.
Valeuu
Uso Firebird 2.0 Interbase, Delphi e IbExpert.
Valeuu
GOSTEI 0
Rjun
30/04/2009
Você quer uma ordenação como se o campo fosse um DateTime? Por que você definiu um varchar para receber data? Para que a ordenação funcione você teria que ordernar pelo inverso da data armazenada. Por exemplo se a data é 30042009 teria que ordernar por 20090430.
GOSTEI 0
Lehapan
30/04/2009
faça um CAST como campo.
Obs.: os dados do seu campo string devem estar no formato ´dia/mes/ano´.
espero ter ajudado.
SELECT CAST( SEU_CAMPO_STRING_DATA AS DATE) FROM TABELA
Obs.: os dados do seu campo string devem estar no formato ´dia/mes/ano´.
espero ter ajudado.
GOSTEI 0
Marcosrocha
30/04/2009
cleiflavio realmente gravar datas em campos Varchar no banco de dados não é uma coisa legal quando se precisa filtrar ou ordenar por elas.
Se você tiver CERTEZA que todos os registros possuem uma data válida (seja ela null ou dd/mm/yyyy), você pode usar a dica do lehapan para ordenar seu select.Este código converte a data em ´Date´ para que o FireBird possa ordenar por ela corretamente (primeiro ano, depois mês e por último dia)
Se você tiver CERTEZA que todos os registros possuem uma data válida (seja ela null ou dd/mm/yyyy), você pode usar a dica do lehapan para ordenar seu select.
SELECT CAST(SEU_CAMPO_STRING_DATA AS DATE) AS ORDEM, OUTRO_CAMPO FROM TABELA ORDER BY 1
GOSTEI 0
Cleiflavio
30/04/2009
Galera tentei usar o Cast como vcs me falaram para mudar de string para data , mas como meu campo está como Varchar quando executo meu select ele fala que não achou meu campo data no meu sql_dataset.
select id, n_caixa, tabela_caixa.caixa, reserva, hora, tabela_hospital.codigo, hospital, tabela_hospital.cidade from tabela_agendamento LEFT OUTER JOIN tabela_caixa ON tabela_caixa.n_caixa = tabela_agendamento.n_caixa LEFT JOIN tabela_hospital ON tabela_hospital.hospital = tabela_agendamento.hospital
where n_caixa = ´´´ + n_caixa.Text + ´´´ Order by reserva ´;
O meu campo que eu estou usando como data é o Campo RESERVA.
Esse select é uma busca de um produtoque eu preciso ordenar por data que é o campo ´RESERVA´
Será que assim eu ajudo mais.
select id, n_caixa, tabela_caixa.caixa, reserva, hora, tabela_hospital.codigo, hospital, tabela_hospital.cidade from tabela_agendamento LEFT OUTER JOIN tabela_caixa ON tabela_caixa.n_caixa = tabela_agendamento.n_caixa LEFT JOIN tabela_hospital ON tabela_hospital.hospital = tabela_agendamento.hospital
where n_caixa = ´´´ + n_caixa.Text + ´´´ Order by reserva ´;
O meu campo que eu estou usando como data é o Campo RESERVA.
Esse select é uma busca de um produtoque eu preciso ordenar por data que é o campo ´RESERVA´
Será que assim eu ajudo mais.
GOSTEI 0
Marcosrocha
30/04/2009
Select id, n_caixa, tabela_caixa.caixa, reserva, hora, tabela_hospital.codigo, hospital, tabela_hospital.cidade from tabela_agendamento LEFT OUTER JOIN tabela_caixa ON tabela_caixa.n_caixa = tabela_agendamento.n_caixa LEFT JOIN tabela_hospital ON tabela_hospital.hospital = tabela_agendamento.hospital Where n_caixa = ´´´ + n_caixa.Text + ´´´ Order by Cast(reserva as Date)´; // O Segredo está aqui no Order by
GOSTEI 0
Cleiflavio
30/04/2009
MarcosRocha, Deu certo era isso mesmo.
Valeuuuuu
Valeuuuuu
GOSTEI 0