Tentando inserir uma Data no MySQL

E ae pessoal… to com um probleminha:

Numa tela de um sistema que eu to fazendo, tenho um campo JFormattedField com máscara para data ( ##/##/#### ).
Quando aciono o botão “Gravar”, verifico se a data é válida e tudo mais ( dd/MM/yyyy ) … Porém, na minha tabela MySQL, o formato para Data é ( yyyy/MM/dd ).
Como faço essa inserção? Como transformo o que estou pegando do JFormattedField para esse padrão do BD?

Desde já agraceço!

Com SimpleDateFormat.

O estranho é que essa transformação é transparente, quando convertemos a String para Date e damos um setTimestamp no PreparedStatement.

Você precisa criar um formatador (DateFormat) para a sua data. Tenho esse pronto.

No código abaixo, defini um formato de data (dd/MM/yyyy) para datas em texto. Mas quando vou salvar no banco, salvo no tipo Date mesmo, por isso fasso o DateFormat.parse().

O DateFormat.parse() serve para transformar uma string em data, de acordo com seu formato. O DateFormat.format() faz o contrário.

Se você salva no banco usando o sql direto, crie um DateFormat no formato que deseja (“yyyy/MM/dd”).

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class FormatoData {

    String data_br;
    java.util.Date data;
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

    public String getDataBR(java.util.Date data) {

        try {
            data_br = df.format(data);
        }
        catch (Exception e) {
            data_br = "";
        }

        return data_br;
    }

    public java.util.Date getData(String data_br) {

        try {
           data = df.parse(data_br.trim());
        } catch (ParseException ex) {
           data = null;
        }

        return data;
    }
}

Espero ter ajudado.

como eu faço para armazenar a data escrita no meu [color=green]tfrgdata[/color].getText() sendo que será escrita dd/MM/yyyy e no caso tem que armazenar yyyy/MM/dd

veja onde eu quero fazer isso:
quando está na alteração o botão gravar passa por aqui: (dando um UPDATE)


else if (acao.equals("alteracao")) {
            try {stam.executeUpdate("UPDATE TABPRI SET DESPRI = '" + tfDespri.getText() + "'," +
                        "POSPRI = " + tfPospri.getText() + ",RGCODUSU= " + tfrgcodusu.getText() + ", " +
                        "RGUSUARIO = " + tfrgusuario.getText() + ", RGDATA= '" +  [b] [color=green]tfrgdata[/color].getText()[/b] + "', " +
                        "RGEVENTO = " + tfegevento.getText() + " WHERE CODPRI = " + LCodpri.getText());
                } catch (SQLException ex) {
                ex.printStackTrace();
            }

repare que é esse [color=green]tfrgdata[/color].getText() que pega no jFormatedTextfield a data so que infelizmente ta salvando um numero que não tem nada a ver com o que eu boto, acho que ta querendo armazenar dd/MM/yyyy 00:00:00:00000 algo assim.

Ola tudo bom? Estou desenvolvendo um projeto web com hibernate, jsp e o vraptor 3. Mas estou tendo dificuldedas para gravar um campo date no banco de dados. Alguem poderia me dar uma ajuda?

Meu UsuarioDao:
[color=blue]
package com.wordpress.wbotelhos.dao;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

import com.wordpress.wbotelhos.hibernate.HibernateUtil;
import com.wordpress.wbotelhos.model.Usuario;

/**

@SessionScoped
@Component
public class UsuarioDao implements Serializable {

private static final long serialVersionUID = -1917047398280846082L;

private List<Usuario> usuarioList = new ArrayList<Usuario>();
private Integer codigo = 1;
private Session session;  

public void salvar(Usuario usuario) {
	try {
		Session session = new HibernateUtil().getSession();
		Transaction trans = session.beginTransaction();
		session.save(usuario);
		trans.commit();
		session.close();
	}catch(HibernateException he){
		he.printStackTrace();
	}catch (Exception e) {
		e.printStackTrace();
	}
	usuarioList.add(usuario);
}

public List<Usuario> loadAll() {
	Session session = new HibernateUtil().getSession(); 
	usuarioList = session.createCriteria(Usuario.class).list(); 
	return usuarioList;
}

public Usuario loadById(Usuario usuario) {
	Usuario usuarioDelete = null;

	for (Usuario item : usuarioList) {
		if (item.getCodigo() == usuario.getCodigo()) {
			usuarioDelete = item;
			break;
		}
	
	}

	/*
	 * Se o usuário desistir de atualizar depois dos dados retornado na tela obviamente
	 * o usuário já terá sido removido da lista, mas o exemplo é apenas didático.
	 */
	removerItem(usuarioDelete);
	
	return usuarioDelete;
}

public void remover(Usuario usuario) {
	Usuario usuarioDelete = null;

	for (Usuario item : usuarioList) {
		if (item.getCodigo() == usuario.getCodigo()) {
			usuarioDelete = item;
			break;
		}
	}
	
	removerItem(usuarioDelete);
}

private void removerItem(Usuario usuarioDelete) {
	if (usuarioList.remove(usuarioDelete)) {
		codigo--;
	}
}

 public void remove(Usuario usuario) {  
	
	Transaction tx = session.beginTransaction();  
	session.delete(usuario);  
	tx.commit();  
} 

} [/color]

Meu DicionarUsuario:
[color=blue]package com.wordpress.wbotelhos.hibernate;

import java.util.Date;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.wordpress.wbotelhos.model.Usuario;

public class AdicionarUsuario {

public static void main(String[] args) {
	
	// Criação do usuario
	Usuario usuario = new Usuario();
	Date dtNasc = new Date();
	dtNasc.toString();
	usuario.setNome("Nome");
	usuario.setSenha("9063");
	usuario.setDtnascimento(dtNasc);
	usuario.setLogin("loginasfdasdf");
	usuario.setAtivo(false);
	
	try {
		Session session = new HibernateUtil().getSession();
		Transaction trans = session.beginTransaction();
		session.save(usuario);
		trans.commit();
		session.close();
		System.out.println("Usuário "+ usuario.getNome()+ " gravado com sucesso! ");
	}catch(HibernateException he){
		he.printStackTrace();
	}catch (Exception e) {
		e.printStackTrace();
		
	}
	
}

} [/color]

Por favor, me ajudem…

olhe o exemplo…

[code]
SimpleDateFormat dataformatador = new SimpleDateFormat(“dd/MM/yyyy”);
SimpleDateFormat dataformatador2 = new SimpleDateFormat(“yyyy/MM/dd”);

if (acao.equals(“INCLUIR VALES”)) {
try {
jCBSePago.setEnabled(false);
Date d = new Date();
SimpleDateFormat formatador = new SimpleDateFormat(“dd/MM/yyyy”);
data = dataformatador.parse(formatador.format(d));
Number p = df.parse(jTFValor.getText());
salariodouble = Double.parseDouble(df2.format§.replace(’,’, ‘.’));
stam.executeUpdate(“INSERT INTO MOVVALE (CODVALE,DTMOV,DESCMOV,VRMOV,PGMOV,CODPROF)”
+ " VALUES (" + jLCodigoDeVale.getText() + “,’” + dataformatador2.format(data) + “’,’” + jTFDesc.getText() + “’,” + String.valueOf(salariodouble) + “,‘n’,” + tfLcodprof.getText() + “)”);
JOptionPane.showMessageDialog(null, “Gravado com sucesso”);
} catch (ParseException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, " 1º_O erro é_ \n" + ex.getLocalizedMessage());
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, " 2º_O erro é_ \n" + ex.getLocalizedMessage());
}[/code]