Problemas de fechas entre NetBeans - Oracle

Tengo un problema cuando quiero calcular los valores entre 2 fechas, por ejemplo quiero calcular desde 01/03/2016 hasta 31/03/2016 pero me figura valores del 29/02/2016 hasta el 30/03/2016, no se si alguien a pasado por este problema.

Este es el código de mi proyecto en NetBeans:

dia = jdatechooser1.getCalendar().get(Calendar.DAY_OF_MONTH);
mes = jdatechooser1.getCalendar().get(Calendar.MONTH);
año = jdatechooser1.getCalendar().get(Calendar.YEAR);
dia2 = jdatechooser2.getCalendar().get(Calendar.DAY_OF_MONTH);
mes2 = jdatechooser2.getCalendar().get(Calendar.MONTH);
año2 = jdatechooser2.getCalendar().get(Calendar.YEAR);
String a = año + "-" + String.format("%02d", mes + 1) + "-" + String.format("%02d", dia);
String b = año2 + "-" + String.format("%02d", mes2 + 1) + "-" + String.format("%02d", dia2);
try {
callable = conx.prepareCall("{call FBSALSA.SP_INVE_VALO2(?,?)}");
callable.setDate(1, java.sql.Date.valueOf(a));
callable.setDate(2, java.sql.Date.valueOf(b));

Estos son los parámetros del procedure en Oracle :

CREATE OR REPLACE PROCEDURE SP_INVE_VALO2(vd_fec_ini IN DATE,
vd_fec_fin IN DATE)

Respuesta

Normalmente cuando se envian fechas a un procedure o una function de oracle, estos se envian en forma de String (Varchar) luego dentro de tu procedure o function es tan simple como hacer un TO_DATE("mi fecha string", "el formato de mi fecha string");

Por ejemplo :

Si tuvieras este procedure:

CREATE OR REPLACE PROCEDURE SP_INVE_VALO2(vd_fec_ini IN VARCHAR,
vd_fec_fin IN VARCHAR)

Luego (imaginando que desde Java envias 01-12-1970) harias un:

v_MI_FECHA1 := TO_DATE(vd_fec_ini, "DD-MM-RRRR")

De esta manera trabajarías con fechas DATE en oracle pero transportarías Strings.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas