Como manipular data

[i]Boa tarde pessoal!

Então, tenho a seguinte dúvida: tenho uma variável que pega a data do meu sistema, e joga pro banco (sendo essa variavel uma String). Porém, precisava num dado momento do programa, fazer a ordem decrescente de registros, com relação a data, ou seja, mostrar ao usuário da menor à maior data registrada.

Porém, a dúvida maior é essa: para que tipo de arquivo eu devo converter essa String? e como vou fazer a chamada do banco de dados, nessa ordem decrescente (alem de usar o DESC, no mysql) ?

Obrigada a todos, desde já! ;][/i]

[quote=Suellen_Susu][i]Boa tarde pessoal!

Então, tenho a seguinte dúvida: tenho uma variável que pega a data do meu sistema, e joga pro banco (sendo essa variavel uma String). Porém, precisava num dado momento do programa, fazer a ordem decrescente de registros, com relação a data, ou seja, mostrar ao usuário da menor à maior data registrada.

Porém, a dúvida maior é essa: para que tipo de arquivo eu devo converter essa String? e como vou fazer a chamada do banco de dados, nessa ordem decrescente (alem de usar o DESC, no mysql) ?

Obrigada a todos, desde já! ;][/i][/quote]

Converta para o tipo Date e para fazer a consulta no banco use

SELECT * FROM suatabela ORDER BY suadata

também pode colocar no final do código DESC para listar de forma decrescente.

flw!

Por que você manipula Strings? Você pode usar o tipo Date, que tem as funções que você precisa, inclusive no banco.

mas nesse caso, que eu ja tenho esse código pronto:

Date agora = new Date(); DateFormat mostradata; mostradata = DateFormat.getDateInstance(DateFormat.MEDIUM); Pontos.pegadata = mostradata.format(agora); labelRecebeData.setText(Pontos.pegadata);

como faço pra pegar o q ta no labelRecebeData, ñ em formato de String, mas de data msmo?

pq numa parte do meu código, eu fou ter isso aki:

if (BD.getConnection()) { String sql = ""; sql = "INSERT INTO recordes (nome, nivel, codnivel, pontuacao, media, data, tempo) Values('" + labelRecebeNome.getText() + "','" + Pontos.nivel + "','" + codnivel + "','" + Pontos.ponto + "','" + Pontos.resultMFormatado + "','" + Pontos.pegadata + "','" + Pontos.tempofinal + "')"; int r = BD.runSQL(sql); }

pq é isso q to jogando no banco… (e no banco, deixei como String, pq ainda ñ mudei essa variavel de data, entende?)

e agora, como continuo?

Seguinte…O banco de dados entende como ano/mes/dia
Entaum esta e a forma de gravar.

veja como faco.

public class MinhasDatas{

//aqui eu converto a data pra ano/mes/dia
 public String formataDataRetornaBD(String data) throws ParseException{
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date d = df.parse(data);
        df = new SimpleDateFormat("yyyy-MM-dd");
        String s = df.format(d);
        return s;
    }

//aqui eu converto para dia/mes/ano
public String formataDataExibe(String data) throws ParseException{        
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        Date d = df.parse(data);
        df = new SimpleDateFormat("dd/MM/yyyy");
        String s = df.format(d);
        return s;
    }
}

Funciona assim: O método FormataDataRetornaBD recebe uma string dia/mes/ano e converte para ano/mes/dia para conseguir gravar no BD. Ja o metodo formataDataExibe eu mando uma string ano/mes/dia e me retorna dia/mes/ano…

Pra gravar vc faz assim.

String data = "26/08/2011";
PreparedStatement stm = conexao.prepareStatement("INSERT INTO tabela (data) VALUES (?)");
stm.setDate(1, java.sql.Date.valueOf(new MinhasDatas().formataDataRetornaBD(data))); //preste atencao a esta linha

Eh isto

t+ e boa sorte

.

eu acho mais prático fazer assim:

stm.setDate(1, new java.sql.Date(minhaData.getTime())); Obs: minhaData é do tipo java.util.Date;

[i]Então pessoal, obrigada a todos, mas o código do acbit foi o mais correto e util pra mim…

Só que a única coisa que ñ esta funcionando é isto, e essa é a minha dúvida:

assim, eu tenho q salvar no meu banco uma variavel q tem a formatação (yyyy-mm-dd), q é do tipo date format. Porém, o meu banco a coluna da data é do tipo date, e ele esta recusando d salvar os registros por causa dessa variavel. Interfere o banco ser do tipo date, e a variavel do tipo date format? por isso o erro?

Obrigada a todos…[/i]

Pessoal, tópico resolvido!!!

meu código ficou assim:

1º Quando abro meu frame, que é só pra mostrar a data ao usuário:

Date agora = new Date(); //chama data atual do sistema numa variavel Date mostradata = DateFormat.getDateInstance(DateFormat.MEDIUM); //defino o tipo de exibição dela Pontos.pegadata = mostradata.format(agora); //transformo-a em String labelRecebeData.setText(Pontos.pegadata); // é exibida no label mostradata = new SimpleDateFormat("yyyy-MM-dd"); // código sem uso, mas deixei pois vou utiliza-lo mais pra frente

2º Ação do botão quando clicado referente a data:

java.sql.Date atualDate = new java.sql.Date(new Date().getTime()); // cria variavel atualDate, pegando a data do sistema , no formatado padrao (yyyy-mm-dd), para ser jogada no banco de dados

Obrigada a Todos pessoal!!!

Até mais… ;]

Tambem pode se utilizaro do

GregorianCalendar calendario = new GregorianCalendar();
calendario.getTime()