Problema em converter data(DataTruncation)

4 respostas
Luciano_Lopes

Pessoal,estava usando esse código para converter uma data(String) de um jTextField para um campo date do mysql:

SimpleDateFormat data=new SimpleDateFormat("dd/MM/yyyy");
        Date eventodata=new Date(data.parse(jData.getText()).getTime());
        Date eventoalar=new Date(data.parse(jAlarme.getText()).getTime());

Esta funcionando tranquilo convertendo a string para “yyyy-MM-dd” e mandando para o banco sem nenhum problema,resolvi então usar esse mesmo código em outro frame,e ai começou o problema,toda vez que tento mandar a data para o mysql ele me retorna um erro dizendo que o valor é muito grande para o campo.Quando fui verificar o valor que minha variavel “eventodata”( tipo date ) estava recebendo,vi que o calor era esse:

Tue Feb 02 00:00:00 GMT-03:00 2010

Alguem porque isso ta acontecendo?Existe outra forma de converter uma String para Date?Desde ja agradeço a ajuda.vlw

Obs:Preciso urgentemente da ajuda de vocês, pois não entreguei o sistema para o cliente por causa de problema.

4 Respostas

Luciano_Lopes

up

M

Evite “uppar” tópicos.

Você sabe que existem duas classes Date, certo? A java.util.Date e a java.sql.Date.

Tendo uma instância da classe java.util.Date, crie uma instância da classe java.sql.Date e insira o objeto Date no banco (usando o setDate de PreparedStatement) ao invés de inserir uma String.

pmlm

Um print de uma variável do tipo Date dá sempre algo como o que tu tens.

Se queres ter a data com determinado formato, usas o SimpleDateFormat para formatar a data para uma String.

Date minhaData = new Date();

System.out.println(minhaData); //imprime    Fri Feb 05 17:18:00 GMT 2010  

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 

String minhaDataFormatada = dateFormat.format(minhaData);

System.out.println(minhaDataFormatada);  //imprime    05/02/2010
B

Tem que entender que para todo tipo de dado, há o formato que ele usa internamente para guardar os seus dados, e há as maneiras de representar esse dado graficamente, imprimindo o valor num formato que possamos entendê-lo.

O teu formatador está certo, vai converter uma data passada no formato dd/MM/yyyy sem problemas. Tem que ver mesmo é o que está passando para o banco de dados, nas tuas classes de persistência.

Esse formato que você viu que ele está passando não é o certo, é somente a representação da data no formato “EEE MMM dd HH:mm:ss zzz yyyy” que o método toString imprime quando é chamado.

Criado 4 de fevereiro de 2010
Ultima resposta 5 de fev. de 2010
Respostas 4
Participantes 4