Java - Urgente, necesito listar registros en un intervalo de dos fechas

 
Vista:
Imágen de perfil de Alejandro
Val: 38
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Urgente, necesito listar registros en un intervalo de dos fechas

Publicado por Alejandro (21 intervenciones) el 11/10/2019 21:32:01
Este es el codigo, pero no funciona. Me tira este error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Mar 12 00:00:00 ART 14 AND Thu Mar 11 00:00:00 ART 17' at line 1


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
DefaultTableModel modelo = (DefaultTableModel) tablaventas.getModel();
String dia1 = Integer.toString(fechadesde.getCalendar().get(Calendar.DAY_OF_MONTH));
String mes1 = Integer.toString(fechadesde.getCalendar().get(Calendar.MONTH));
String year1 = Integer.toString(fechadesde.getCalendar().get(Calendar.YEAR));
String fechadesde = (year1 + "-" + mes1 + "-" + dia1);
String dia2 = Integer.toString(fechahasta.getCalendar().get(Calendar.DAY_OF_MONTH));
String mes2 = Integer.toString(fechahasta.getCalendar().get(Calendar.MONTH));
String year2 = Integer.toString(fechahasta.getCalendar().get(Calendar.YEAR));
String fechahasta = (year2 + "-" + mes2 + "-" + dia2);
PreparedStatement pst = null;
ResultSet rs = null;
try{
    Date date2 = sdf.parse(fechadesde);
    Date date3 = sdf.parse(fechahasta);
    String sql = "SELECT ncomp, nombre, domicilio, dnicuit, fecha FROM ventas_clientes WHERE fecha BETWEEN "+date2+" AND "+date3+"";
    pst =connect().prepareStatement(sql);
    rs = pst.executeQuery();
        while(rs.next()){
 
                    Vector v = new Vector();
                    v.add(rs.getString(1));
                    v.add(rs.getString(2));
                    v.add(rs.getString(3));
                    v.add(rs.getString(4));
                    v.add(rs.getString(5));
                    modelo.addRow(v);
                    tablaventas.setModel(modelo);
 
        }
}catch(Exception e){
    System.err.println("Error" + e);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Urgente, necesito listar registros en un intervalo de dos fechas

Publicado por Billy Joel (875 intervenciones) el 12/10/2019 00:10:33
No es necesario crear los Date. Si estas usando SimpleDateFormat simplemente parsea las fechas que tienen los objetos fechadesde y fechahasta.

Otra cosa, estas usando PreparedStatement entonces sacale el maximo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
DefaultTableModel modelo = (DefaultTableModel) tablaventas.getModel();
//String dia1 = Integer.toString(fechadesde.getCalendar().get(Calendar.DAY_OF_MONTH));
//String mes1 = Integer.toString(fechadesde.getCalendar().get(Calendar.MONTH));
//String mes1 = Integer.toString(fechadesde.getCalendar().get(Calendar.MONTH));
//String year1 = Integer.toString(fechadesde.getCalendar().get(Calendar.YEAR));
//String fechadesde = (year1 + "-" + mes1 + "-" + dia1);
//String dia2 = Integer.toString(fechahasta.getCalendar().get(Calendar.DAY_OF_MONTH));
//String mes2 = Integer.toString(fechahasta.getCalendar().get(Calendar.MONTH));
//String mes2 = Integer.toString(fechahasta.getCalendar().get(Calendar.MONTH));
//String year2 = Integer.toString(fechahasta.getCalendar().get(Calendar.YEAR));
//String fechahasta = (year2 + "-" + mes2 + "-" + dia2);
String f_desde = sdf.format(fechadesde.getCalendar().getTime());
String f_hasta = sdf.format(fechahasta.getCalendar().getTime());
PreparedStatement pst = null;
ResultSet rs = null;
try {
    //Date date2 = sdf.parse(fechadesde);
    //Date date3 = sdf.parse(fechahasta);
    //String sql = "SELECT ncomp, nombre, domicilio, dnicuit, fecha FROM ventas_clientes WHERE fecha BETWEEN " + date2 + " AND " + date3 + "";
    String sql = "SELECT ncomp, nombre, domicilio, dnicuit, fecha FROM ventas_clientes WHERE fecha BETWEEN ? AND ?";
    pst = connect().prepareStatement(sql);
    pst.setString(1, f_desde);
    pst.setString(2, f_hasta);
    rs = pst.executeQuery();
    while (rs.next()) {
        Vector v = new Vector();
        v.add(rs.getString(1));
        v.add(rs.getString(2));
        v.add(rs.getString(3));
        v.add(rs.getString(4));
        v.add(rs.getString(5));
        modelo.addRow(v);
        tablaventas.setModel(modelo);
    }
} catch (SQLException e) {
    System.err.println("Error" + e);
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar