eu preciso fazer um select no banco de dados na ordem das datas, por causa que é tem uma mascara a data é um campo string. Como faço para selecionar por ordem de data?
Código do select:
con_agenda2.executeSQL("select * from agenda order by agedata");
Tudo bem.
Como é que a data é cadastrada?
Ela é cadastrada como “ano-mês-dia” (por exemplo, 20120814) ou então é usada aquela bizarrice de usar primeiro o dia, depois o mês e então o ano (“14/08/2012”)? Ou então mais bizarramente, “14/8/2012” ou pior ainda, “14 de agosto de 2012”?
Se for dia, mês e ano, não tem como ordenar data sem fazer algumas coisas bizarras.
É melhor usar sempre ano, mês, dia porque isso faz com que a ordenação seja automática (igual à ordenação de strings).
[quote=entanglement]Tudo bem.
Como é que a data é cadastrada?
Ela é cadastrada como “ano-mês-dia” (por exemplo, 20120814) ou então é usada aquela bizarrice de usar primeiro o dia, depois o mês e então o ano (“14/08/2012”)? Ou então mais bizarramente, “14/8/2012” ou pior ainda, “14 de agosto de 2012”?
Se for dia, mês e ano, não tem como ordenar data sem fazer algumas coisas bizarras.
É melhor usar sempre ano, mês, dia porque isso faz com que a ordenação seja automática (igual à ordenação de strings).
[/quote]
depois de falar que é bizarro tantas coisas, é capaz de algumas informações serem omitidas a partir de agora rsrs
Pois é, normalmente as pessoas têm dificuldade de usar os tipos de dados do banco de dados que lidam diretamente com datas e horas por não terem aprendido isso (ou por falta de interesse, mas isso não vem ao caso).
Casualmente, o Oracle também tem esses mesmos tipos .
Eu coloquei o campo do banco de dados como date agora. E ele retorna uma data ano/mes/dia. Eu gostaria de organizar dia/mes/ano para melhor entendimento de um leigo.
E o que um “leigo” vai estar fazendo, consultando seu banco de dados ? Aqui usamos Timestamp, acha que na tela aparece ao usuário final, um Timestamp ?
É por isso que existem formas de manipular data, com o Calendar (entre outros). Você lê o campo no formato de date no banco e o formata para aparecer na tela ao usuário final como desejar. Então, na tela, obviamente, podes usar “dd/MM/yyyy”, pois é o padrão BR.
Lucas, uma coisa boa de usar campos do tipo Date ou Timestamp é que eles ocupam menos espaço que um VARCHAR que represente a data desse jeito tosco (dia/mês/ano), que você deve ter visto que não presta para ordenar, encontrar (por exemplo, se você tem a data 14 de agosto de 2012, você é obrigado, se for um VARCHAR e não houver padronização nenhuma, procurar por “14/8/2012”, “14/08/2012”, e outras variações desse mesmo tema.
Se você tem um Date ou Timestamp, 14 de agosto de 2012 é sempre 14 de agosto de 2012, e é representado internamente no banco como um número, o que ocupa bem menos espaço que um VARCHAR.
Ele mostra ano/mes/dia, mas ele na verdade guarda em um outro formato, que é um número simples.
Tudo é questão de mostrar a data de forma adequada. Por exemplo, seu banco pode já lhe retornar no formato que você precisa (por exemplo, ele pode retornar a data por extenso, dependendo do banco de dados).
Como faço para demonstrar esses dados na mascara “dd/MM/yyyy” como dito pelo nel? Pois eu gostaria de carregar um jtable e mostrar o campo data nesse formato.
[quote=lucaslzl]Como faço para demonstrar esses dados na mascara “dd/MM/yyyy” como dito pelo nel? Pois eu gostaria de carregar um jtable e mostrar o campo data nesse formato.
Obrigado.[/quote]
O que mais tem na internet são exemplos de como formatar a data, aqui no GUJ mesmo, tem inúmeros.
Mas segue um exemplo para ilustrar o que eu queria dizer, tanto com Timestamp quanto com Date.
É java.sql.Timestamp, java.util.Calendar, java.text.SimpleDateFormat e java.util.Date ok?