[RESOLVIDO] não consigo transforma string em data pra armazena no mysql

13 respostas
T

estou tentando transforma uma string em data pra armazenar no banco o código e este:

String data 	                = request.getParameter("data");
SimpleDateFormat formato  = new SimpleDateFormat("yyyy/MM/dd");
Date  data1                       = formato.parse(data);

só que quando uso isto retorna este formato:

( ‘Tue May 31 00:00:00 BRT 18’ )

porque não aparece assim “2009-02-01”…

desde já agradeço…

13 Respostas

doug

Olá
Esta retornando isso, pq vc esta vendo o toString do date…
Vc esta usando JDBC, ou um framework??

Flwsss

T

Estou fazendo o seguinte:
1 - premeiro pego o que vem do forme em html que é:

String data       = request.getParameter("data");

2 - tento passa a string para data que o banco do mysql entendi que é “2008-01-02”.
e isto que quero fazer mas uso o seguinte: “peguei no forum esta forma de tranforma a String em data”

SimpleDateFormat formato  = new SimpleDateFormat("yyyy/MM/dd");  
Date  data1                       = formato.parse(data);

ai não sei porque ela me retorna isto: " Tue May 31 00:00:00 BRT 18"

o problema e este.

doug

Ok,

Tente fazer o seguinte, esse data1 vc já manda direto no seu insert ou update
Se vc postar a parte vc faz o insert ou update, vai ajudar mais…

To falando assim, pq não sei como vc faz seu insert, se é por preparement ou Statement… (algo do genero)
um vc faz o sql (string) outro vc pode fazer setParameter( mandar os campos como um parametro).

Dai precisa ver como é que vc está fazendo, blz!!

Flwsss

T

este e o metodo prainserir no banco e este:

try {

			sql.append("INSERT INTO credito" +
										"(`descricao`,`valor`,`dataPagamento`,`status` )" +
									"VALUES" +
										"('"+cred.getDescricao()+"'," +
										 "'"+cred.getValor()+"'," +
										 "'"+cred.getDataPagamento()+"'," +
										 "'"+cred.getStatus()+"')");	
			
			objConexao.getConnection();	
			objConexao.executeUpdate(sql.toString());				


		} catch (CreditoException e) {
			// TODO: handle exception
			e.getMessage();

conectar o banco:

this.stmt.executeUpdate(sql);
doug

blz…
Então fica assim

try {   
SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd");     
sql.append("INSERT INTO credito" +   
                                    "(`descricao`,`valor`,`dataPagamento`,`status` )" +   
                                "VALUES" +   
                                    "('"+cred.getDescricao()+"'," +   
                                     "'"+cred.getValor()+"'," +   
                                                       //cred.getDataPagamento()), creio que esse get me retorne um Date, dai eu passo ele para string
                                                      // da forma que vc deseja yyyy/MM/dd
                                     "'"+sdf.format(cred.getDataPagamento())+"'," +   
                                     "'"+cred.getStatus()+"')");       
           
        objConexao.getConnection();   
        objConexao.executeUpdate(sql.toString());

Acho que isso deve funcionar

Espero ter ajudado
Flwsss

T

Não funcionou est código: mas valeu mesmo pela força.

try {     
SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd");       
sql.append("INSERT INTO credito" +     
                                    "(`descricao`,`valor`,`dataPagamento`,`status` )" +     
                                "VALUES" +     
                                     "('"+cred.getDescricao()+"'," +     
                                      "'"+cred.getValor()+"'," +     
                                                        //cred.getDataPagamento()), creio que esse get me retorne um Date, dai eu passo ele para string  
                                                       // da forma que vc deseja yyyy/MM/dd  
                                      "'"+sdf.format(cred.getDataPagamento())+"'," +     
                                      "'"+cred.getStatus()+"')");         
              
         objConexao.getConnection();     
         objConexao.executeUpdate(sql.toString());
doug

Olá
Ele deu algum erro, pois acho que agora não é o formato do seu date… tem como vc postar seu StackTrace!?

Flwsss

T

ele abri uma Exception, mas o problema e o seguinte: quando debug ele mostra a sql pra ser execultada desta forma “Tue May 31 00:00:00 BRT 18’” ai não execulta pois o banco só aceita desta forma “2008-12-12”

quando uso isto:

try {     
    SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd");       
    sql.append("INSERT INTO credito" +     
                                        "(`descricao`,`valor`,`dataPagamento`,`status` )" +     
                                    "VALUES" +     
                                        "('"+cred.getDescricao()+"'," +     
                                         "'"+cred.getValor()+"'," +     
                                                           //cred.getDataPagamento()), creio que esse get me retorne um Date, dai eu passo ele para string  
                                                          // da forma que vc deseja yyyy/MM/dd  
                                        "'"+sdf.format(cred.getDataPagamento())+"'," +     
                                        "'"+cred.getStatus()+"')");         
                
           objConexao.getConnection();     
           objConexao.executeUpdate(sql.toString());

a data aparece assim: “Tue May 31 00:00:00 BRT 18’”

T

o erro e este:

java.lang.IllegalArgumentException: Cannot format given Object as a Date
Marcio_Nogueira

Você já tentou usar sql.Date? :wink:

doug

RSRS
Ultimo chute, tenta mudar seu simpleformatdate para essa string

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
//ou essa
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Espero que funcione

Flwsss

T

Obrigado mesmo pela ajuda mas quando faço isto que você me pede:

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");  
ou essa  
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

só me retorna assim a sql:

INSERT INTO credito(`descricao`,`valor`,`dataPagamento`,`status` )VALUES('null','12.55','Tue May 31 00:00:00 BRT 18','teste')

cara muito obrigado pela força, só em pode posta vale muito vou tenta por aqui até acha o que estou errando.

T

acabei de resolver meu problema, depois de varias pesquisando no Google achei esta dica que resolveu tudo. A forma agora esta certo pra grava no banco.

http://www.javafree.org/topic-855834-Date-e-SimpleDateFormat

obrigado a todos.

Criado 2 de janeiro de 2009
Ultima resposta 3 de jan. de 2009
Respostas 13
Participantes 3