Como gravar um Date no BD?

6 respostas
mausexdd

Bom dia

Ex… tenho um atributo Date que precisa receber uma str e gravar no bd

Public class Gerente{

private Date dataNascimento;

getters e setters...
}

//na classe principal como atribuo um valor valida a date eu fis assim


String data = // Vai receber um data no formato xx/xx/xxxx por um JOptionPane
Date dataNasc = new Date(data);


 que quando faço

Gerente g = new Gerente();
g.setDataNascimento(dataNasc);

MySQL:
//Só que quando grava no bd aparece isso na column -> 1993-01-05 00:00:00

6 Respostas

nel
mausexdd:
Bom dia

Ex.. tenho um atributo Date que precisa receber uma str e gravar no bd

Public class Gerente{

private Date dataNascimento;

getters e setters...
}

//na classe principal como atribuo um valor valida a date eu fis assim


String data = // Vai receber um data no formato xx/xx/xxxx por um JOptionPane
Date dataNasc = new Date(data);


 que quando faço

Gerente g = new Gerente();
g.setDataNascimento(dataNasc);

MySQL:
//Só que quando grava no bd aparece isso na column -> 1993-01-05 00:00:00

Oi!

Como definiu o campo na sua tabela? Normalmente defini-se como um Timestamp, se for o caso, deve salvar dessa forma.
E como queres que apareça em sua base de dados?

Abraços.

mausexdd

o campo na tabela foi gerado automaticamente com Hibernate.

a Classe mapeada tinha o atributo

private Date dataNascim;

L

Ola amigo!

Tente converter a data com o codigo abaixo:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");     
java.sql.Date data = new java.sql.Date(format.parse(suaData).getTime());

[]'s

fabin

olha se e isso???

cria uma classe que converte no formato

public class ConverteData {  
      
        public String ConverteMysql(Date data) {  
            SimpleDateFormat formato = new SimpleDateFormat("yyyy/MM/dd");  
            return formato.format(data);  
        }  
        public String ConverteDefault(Date data)  
        {  
            SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");  
            return formato.format(data);  
        }  
    }
Public class Gerente{
//chame o metodo da classe ConverteData()
 ConverteData converte = new ConverteData();//instancio 
private Date dataNascimento;

//getters e setters...
}

Date data = asuaJFormat.getDate();//pego formato date  
String dataFormatada = converte.ConverteMysql(data);
Date dataNasc = new Date(dataFormatada);
Gerente g = new Gerente();
g.setDataNascimento(dataNasc);
drsmachado

fabin:
olha se e isso???

cria uma classe que converte no formato

public class ConverteData {  
      
        public String ConverteMysql(Date data) {  
            SimpleDateFormat formato = new SimpleDateFormat("yyyy/MM/dd");  
            return formato.format(data);  
        }  
        public String ConverteDefault(Date data)  
        {  
            SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");  
            return formato.format(data);  
        }  
    }
Public class Gerente{
//chame o metodo da classe ConverteData()
 ConverteData converte = new ConverteData();//instancio 
private Date dataNascimento;

//getters e setters...
}

Date data = asuaJFormat.getDate();//pego formato date  
String dataFormatada = converte.ConverteMysql(data);
Date dataNasc = new Date(dataFormatada);
Gerente g = new Gerente();
g.setDataNascimento(dataNasc);

Fabin, entendo que teu objetivo é ajudar, porém, há muitos meios melhores que este.
Veja bem, se ele for utilizar PreparedStatement (o que é altamente recomendado) ou mesmo CallableStatement (para chamar stored procedures) ele terá à sua disposição o setDate que recebe como argumento um java.sql.Date.
A resposta passada pelo lucasgcp é a mais adequada, neste caso.
Creio que o melhor é ensinar da forma mais adequada (pois ele poderá ter dificuldades em se readaptar, digo isto por experiência própria).

Além do mais, fica mais fácil e elegante utilizar esta abordagem e não misturar Date com String.

fabin

drsmachado:
fabin:
olha se e isso???

cria uma classe que converte no formato

public class ConverteData {  
      
        public String ConverteMysql(Date data) {  
            SimpleDateFormat formato = new SimpleDateFormat("yyyy/MM/dd");  
            return formato.format(data);  
        }  
        public String ConverteDefault(Date data)  
        {  
            SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");  
            return formato.format(data);  
        }  
    }
Public class Gerente{
//chame o metodo da classe ConverteData()
 ConverteData converte = new ConverteData();//instancio 
private Date dataNascimento;

//getters e setters...
}

Date data = asuaJFormat.getDate();//pego formato date  
String dataFormatada = converte.ConverteMysql(data);
Date dataNasc = new Date(dataFormatada);
Gerente g = new Gerente();
g.setDataNascimento(dataNasc);

Fabin, entendo que teu objetivo é ajudar, porém, há muitos meios melhores que este.
Veja bem, se ele for utilizar PreparedStatement (o que é altamente recomendado) ou mesmo CallableStatement (para chamar stored procedures) ele terá à sua disposição o setDate que recebe como argumento um java.sql.Date.
A resposta passada pelo lucasgcp é a mais adequada, neste caso.
Creio que o melhor é ensinar da forma mais adequada (pois ele poderá ter dificuldades em se readaptar, digo isto por experiência própria).

Além do mais, fica mais fácil e elegante utilizar esta abordagem e não misturar Date com String.

Concordo plenamente com vc…o bom q ja fica a dica!!!

Criado 29 de junho de 2011
Ultima resposta 29 de jun. de 2011
Respostas 6
Participantes 5