Converter STRING para DATE

Olá pessoal,

Embora esse assunto ja foi discutido aqui eu continuo com duvidas de como converter uma string para date para inserir no banco.

No banco (MySql) eu criei um campo do tipo date. Criei o seguinte método:

    [code]
    String texto = "16/08/2004";  
    String formato = "dd/MM/yyyy";  
    try { 
        Date data_formatada = new SimpleDateFormat(formato).parse(texto);
        System.out.println("Data..: "+data_formatada);
    } catch (ParseException ex) {
        Logger.getLogger(F_Manter_Titulos.class.getName()).log(Level.SEVERE, null, ex);
    }
    [/code]

    Poré retorna o seguinte:
    [quote]Data..: Mon Aug 16 00:00:00 BRT 2004[/quote]

     O correto não deveria ser: 16/08/2004?

     Esta correto o meu código? Se sim, como inserir no BD?

Obrigado,

Data…: Mon Aug 16 00:00:00 BRT 2004

por que vc acha que o formato não deveria ser esse Data…: Mon Aug 16 00:00:00 BRT 2004?

no seu print vc ta passando um date, e o print chama o toString do date que vai imprimir isso ai dependo do locale

ezem.rs para o banco de dados o correto seria “yyyy-MM-dd”.

Atenção que um Date não tem formato. O que tu podes ter é uma String com uma data formatada.

Errado. Para a BD não há formato, deve ser passado um Date.

Sim é possível alimentar um banco com atributo do tipo date com uma instrução do tipo String, desde que obedeça a seguinte formatação: yyyy-mm-dd.

Pelo facto de ser possível não quer dizer que seja correcto. E isso varia de BD para BD. Com Date funciona da mesma maneira em todas.

pmlm está correto sim. Apenas falei uma possível solução para o banco em específico mysql(citado pelo usuário). Então vejamos uma solução genérica.

Olá ezem,

faça da seguinte forma,

    SimpleDateFormat formato = new SimpleDateFormat("yyyy/MM/dd");   
    Date data_desejada = new SimpleDateFormat("dd/MM/yyyy").parse(CAMPODATA.getText());  
    String data= formato.format(data_desejada);

para enviar para o MYSQL envie como tipo String mesmo ele aceita perfeitamente.

Eis um exemplo de gravação de data no MYSQL

//Abrindo conecção com o Banco de Dados…
Class.forName(driver);
Connection con = DriverManager.getConnection(url,“usuario”,“senha”);

    //PreparedStatement = Passa comandos SQL (gravação,exclusao,edição tec.)
    String sql = "INSERT INTO TAB_cad_contas (ID_conta,agencia_conta,nome_banco_conta,titular_conta,abertura_conta,obs_conta) VALUES (?,?,?,?,?,?)";
    PreparedStatement stmt = con.prepareStatement(sql);
    //Atribua às variáveis do comando SQL
    
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");   
    Date data_aquisicao = new SimpleDateFormat("dd/MM/yyyy").parse(txtdata.getText());  
    String data= formatter.format(data_aquisicao);
    
    stmt.setString(1, txtconta.getText());
    stmt.setString(2, txtagencia.getText());
    stmt.setString(3, txtbanco.getText());
    stmt.setString(4, txttitular.getText());
    stmt.setString(5, data);
    stmt.setString(6, txtobs.getText());
        
    // chamamos o metodo update para gravar
    stmt.executeUpdate();
    // Fechamos as conecções abertas...
    stmt.close();
    con.close();

Simples e sem complicação…

Qualquer dúvida estamos ai…t+

1 curtida