Foros del Web » Programación para mayores de 30 ;) » Java »

Convertir string a date para fecha

Estas en el tema de Convertir string a date para fecha en el foro de Java en Foros del Web. Hola chicos, estoy tratando de insertar una fecha que no es la actual sino la de emisión de una factura que ingreso al sistema y ...
  #1 (permalink)  
Antiguo 29/03/2013, 20:39
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 0
Convertir string a date para fecha

Hola chicos, estoy tratando de insertar una fecha que no es la actual sino la de emisión de una factura que ingreso al sistema y la tomo como String fecha.
En mysql el campo fecha lo tengo como Date entonces hago:


Tomo fecha por get y lo envío en set

Código:
fp.setModificarfecha(txtFecha.getText());

Destpués lo tomo como string y lo trato de convertir a Date y pasarlo desde return d como parámetro a la consulta insert.


Código:
  public void setModificarfecha(String fecha){
       SimpleDateFormat sdf= new SimpleDateFormat("yyyy-mm-dd"); 
       
  
       
        try {
            Date d=sdf.parse(fecha);
            this.d=d;
          
        } catch (ParseException ex) {
            Logger.getLogger(CfacturaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
    } 
    public Date get_Modificarfecha(){
        
        return d;
    }
Hasta acá todo bien, pero me da error cuando ingreso 2012-03-03:

data truncation incorrect date value: 'Tue Jan 03 00:03:00 GMT-03:00 2012' for column 'Fecha' at row 1
  #2 (permalink)  
Antiguo 29/03/2013, 20:55
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 4 meses
Puntos: 34
Respuesta: Convertir string a date para fecha

http://docs.oracle.com/javase/6/docs.../sql/Date.html
  #3 (permalink)  
Antiguo 30/03/2013, 05:47
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Convertir string a date para fecha

Ya había estado en esa web y en 20 más, pero no encontré lo que buscaba, por eso mi pregunta en el foro.
Gracias por pegar el enlace de todas maneras.
  #4 (permalink)  
Antiguo 30/03/2013, 10:04
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Convertir string a date para fecha

En tu código no se puede ver nada, lo primero que tienes que hacer es comprobar que la fecha se está creando correctamente, dices que le pasas 2012-03-03 y el error está diciendo que sería enero.

Lo segundo es que el error te lo da al insertar en la base de datos, no has puesto nada relacionado con eso. Revisa cómo formas la query.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 30/03/2013, 11:05
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Convertir string a date para fecha

Xerelo, gracias por responder.

El insert funciona si le paso fecha como String poniendo varchar el campo en mysql.

Pero al querer insertarlo como Date está el probelma.

Usando
Código:
 Date fecha=new Date(); 
             SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy"); 
             System.out.println("La fecha de hoy es:" + sdf.format(fecha));
a fecha lo formatea, pero que sucede yo no intento cargar la fecha del día sino una x que es la que se emitió la factura que estoy por dar de alta.

Probé mi código en consola y me trae null en fecha
  #6 (permalink)  
Antiguo 30/03/2013, 11:39
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Convertir string a date para fecha

Esto lo puedes resolver tú solo si haces lo que te digo. Lo vuelvo a repetir

1. Comprueba que la fecha que creas es correcta (que no lo es)
"yyyy-mm-dd" es muy diferente de "dd/MM/yyyy"

2. Dices que la intentas insertar un date, pero no pones nada de código relacionado con eso. Revísalo.

Dependiendo de cómo lo estés haciendo, tienes que pasar una String con un formato determinado o un objeto java.sql.Date
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 30/03/2013, 12:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Convertir string a date para fecha

Gracias nuevamente, pasa que soy muy novata en esto.



Paso fecha que lo tomo en un texfield por get a set y después a eso lo trato de formatear con Simpleformat y pasarlo como d a la query

Código:
   private void btnIngresarfacturaproveedorActionPerformed(java.awt.event.ActionEvent evt) {                                                            
CfacturaProveedor fp= new CfacturaProveedor();
           fp.setNumero(txtNumerofacturaproveedor.getText());
        
        fp.setFormadepago(txtFormadepago.getText());
        
       fp.setModificarfecha(txtFecha.getText());
  
 
        fp.setIva(txtIva.getText());
        fp.setDescuento(Integer.parseInt(txtDescuento.getText()));
        fp.setIdproveedor(Integer.parseInt(txtIdproveedor.getText()));
 
        try{
            
       fp.insertarFacturaProveedor(fp.get_Numero(), fp.get_Modificarfecha(), fp.get_Formadepago(), fp.get_Iva(), fp.get_Descuento(),fp.get_Idproveedor());
 
        }
        
        catch(Exception ex){
          JOptionPane.showMessageDialog(null, ex);
    }






Código:
        public void insertarFacturaProveedor(String numero ,Date d ,String formade_pago ,String iva ,int descuento ,int id_proveedor )throws ClassNotFoundException{
            
     
            Conectar c1=new Conectar();
        Connection cn=c1.conexion();
            
            try{
                String sql="insert into facturas_proveedores (numero,fecha,formade_pago,IVA,Descuento,id_proveedor) values('"+numero+"','"+d+"','"+formade_pago+"','"+iva+"','"+descuento+"','"+id_proveedor+"')";
   
                //c es una variable del tipo PreparedStatement que almacena la conexión el método prepareStatement con los parámetros de sql String
                PreparedStatement c=cn.prepareStatement(sql);
            int cant_registros=c.executeUpdate();
             
            if(cant_registros>0)
            {
             JOptionPane.showMessageDialog(null, "Los datos del cliente fueron actualizados correctamente");
            }
                
            }
            
            catch(Exception ex){
                JOptionPane.showMessageDialog(null, ex);
            }
  #8 (permalink)  
Antiguo 30/03/2013, 12:33
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Convertir string a date para fecha

Código Javascript:
Ver original
  1. try{
  2.                 String sql="insert into facturas_proveedores (numero,fecha,formade_pago,IVA,Descuento,id_proveedor) values('"+numero+"','"+d+"','"+formade_pago+"','"+iva+"','"+descuento+"','"+id_proveedor+"')";
  3.                [COLOR="Blue"]System.out.println(sql);[/COLOR]
  4.                 //c es una variable del tipo PreparedStatement que almacena la conexión el método prepareStatement con los parámetros de sql String
Ves la query que estás intentando ejecutar, la copias e intentas ejecutarla directamente en algún gestor/visor de la BBDD, la modificas hasta que funcione y por último modificas el código de java hasta que seas capaz de generar la query correcta.

En tu caso el problema es el formato de fecha, estás pasando una String del tipo 'Tue Jan 03 00:03:00 ... ' cuando si el campo en la BBDD es Date debería ser String año-mes-dia

http://dev.mysql.com/doc/refman/5.0/...-overview.html

Cuando trabajes con base de datos, siempre comprueba que la query que estás haciendo funciona directamente en la base de datos.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: date, fecha, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:31.