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

tipo fecha de jsp a servlet

Estas en el tema de tipo fecha de jsp a servlet en el foro de Java en Foros del Web. Buenas, tengo un formulario el que envío a un servlet un string que es una fecha. Ya en el servlet hago: Código PHP: String fecha =( ...
  #1 (permalink)  
Antiguo 18/01/2012, 02:36
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
tipo fecha de jsp a servlet

Buenas,
tengo un formulario el que envío a un servlet un string que es una fecha.
Ya en el servlet hago:
Código PHP:
String fecha=(req.getParameter("fecha")==null?"":req.getParameter("fecha"));
SimpleDateFormat simple= new SimpleDateFormat("dd/MM/yyyy"); 
Date data null;
try {
    
data simple.parse(fecha);
} catch (
ParseException e) {
    
// TODO Auto-generated catch block
    
e.printStackTrace();

La cosa es que en la base de datos la fecha es de tipo DATE y no me puede guardar porque me dice que lo que va a guardar es 'Wed Jan 18 00:00:00 CET 2012' y yo lo que quiero es que guarde '18/01/2012' que es lo que está en el input

PD: No he visto ningún subforo de JavaServlet y por eso lo he puesto aquí, si no era aquí, perdon por las molestias
  #2 (permalink)  
Antiguo 20/01/2012, 06:12
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: tipo fecha de jsp a servlet

Siento responder, pero la verdad es que la respuesta es importante.
He estado haciendo pruebas, y he hecho una consulta en la que hacía:
SELECT fecha FROM tabla WHERE fecha='01/01/2012'+10;
Como tenía la fecha 11/01/2012 pues me ha mostrado esa fecha, pero la cosa es que el campo fecha ahí es de tipo varchar en la BD y con sólo sumar ha funcionado.
Ahora me he ido al Servlet y le he puesto para que me muestre en consola la fecha.
He guardado en una variable String lo que me devuelve la consulta, es decir '11/01/2012' y al hacer un System.out.println("Hola2:"+checkListsIni+1); lo que me sale en la consola es: '11/01/20121'. Es decir, me ha concatenado la respuesta.
Voy a hacer la prueba con el tipo Date, y a que qué sucede. Creo que saldrá bien. Por eso es importante la respuesta al primer mensaje
Gracias
  #3 (permalink)  
Antiguo 20/01/2012, 13:26
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: tipo fecha de jsp a servlet

Cita:
Iniciado por elpre Ver Mensaje
...
La cosa es que en la base de datos la fecha es de tipo DATE y no me puede guardar porque me dice que lo que va a guardar es 'Wed Jan 18 00:00:00 CET 2012' y yo lo que quiero es que guarde '18/01/2012' que es lo que está en el input ...
Me imagino que estás creando la instrucción SQL concatenando variables:

Código Java:
Ver original
  1. String strSQL = "select ... " + data

Lo que tienes que hacer es darle formato a la variable data.

Código Java:
Ver original
  1. SimpleDateFormat simple= new SimpleDateFormat("yyyyMMdd");
  2. String strSQL = "select ... '" + simple.format(data) + "'";
Saludos,
  #4 (permalink)  
Antiguo 22/01/2012, 13:07
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: tipo fecha de jsp a servlet

he leído algo sobre hacer toDate. Pero eso habría que hacerlo en la consulta. No he leído mucho al respecto, pero también podría servir????
  #5 (permalink)  
Antiguo 23/01/2012, 02:54
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: tipo fecha de jsp a servlet

Cita:
Iniciado por HackmanC Ver Mensaje
Me imagino que estás creando la instrucción SQL concatenando variables:

Código Java:
Ver original
  1. String strSQL = "select ... " + data

Lo que tienes que hacer es darle formato a la variable data.

Código Java:
Ver original
  1. SimpleDateFormat simple= new SimpleDateFormat("yyyyMMdd");
  2. String strSQL = "select ... '" + simple.format(data) + "'";
Saludos,
Si yo el formato ya se lo doy, en el primer mensaje tengo puesto lo del SimpleDateFormat la cosa es que poniendole el formato que quiero me guarda esto:
'Wed Jan 18 00:00:00 CET 2012' es en plan que no hace ni caso al formato que le pongo.

Edito: He proobado lo de to_date pero parece que loq ue hay que hacer es str_to_date(), pero da igual el formato que le ponga, no hace ni caso, te guarda el formato yyyy-MM-dd. Lo que yo necesito es que guarde dd/MM/yyyy.

Entiendo que se puede hacer guardar en la base de datos así yyyy-MM-dd y luego como me dices, al hacer el select ponerle el format, pero si se puede guardar tal y como digo, mejor
  #6 (permalink)  
Antiguo 23/01/2012, 03:30
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: tipo fecha de jsp a servlet

no pensarás guardar en base de datos una fecha como String, ¿verdad? Un date es un Date y tiene un formato muy diferente, el yyyy-MM-dd es el formato con el que lo visualizas en la BD, nada más, eso es configurable, pero al recuperar el Date, si lo que quieres es verlo en una página, lo que tienes es que usar el formateador de Date a String.

En todo caso toca un poco los parámetros de la BD y mira si puedes visualizar los dates con el formato que quieres, pero eso ya no es java.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 23/01/2012, 04:40
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: tipo fecha de jsp a servlet

Ya lo he entendido. Pero sigo teniendo un problema (intentaré explicarlo detallado)
La fecha que cojo en el JavaServlet desde el formulario jsp tiene que ser String:
Código PHP:
String fecha=(req.getParameter("fecha")==null?"":req.getParameter("fecha")); 
Eso tiene que ser así, porque de otra forma no sale.
Tengo una función que hace insert y a ese insert le paso la fecha que tiene que ser tipo Date, por lo que la variable fecha la convierto a Date y así a la funcion insert le paso la variable Date:
Código PHP:
SimpleDateFormat simple= new SimpleDateFormat("yyyyMMdd"); 
        
Date data null;
        try {
            
data simple.parse(fecha);
        } catch (
ParseException e) {
            
// TODO Auto-generated catch block
            
e.printStackTrace();
        } 
Luego ya en el insert le he puesto que me haga el str_to_date().
El problema viene al hacer el SimpleDateFormat() que si pongo "yyyyMMdd" me coge null y si pongo "yyyy-MM-dd", me coge 'Wed Jan 23 00:00:00 CET 2012'.
Es decir el problema es que tengo que conseguir que al hacer insert me haga el pase

Última edición por elpre; 23/01/2012 a las 05:18
  #8 (permalink)  
Antiguo 23/01/2012, 17:05
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: tipo fecha de jsp a servlet

Hola,

Cita:
Iniciado por elpre Ver Mensaje
Es decir el problema es que tengo que conseguir que al hacer insert me haga el pase
¿Cómo haces el insert? Yo me imagino que no estás usando ni un prepared ni un callable statement, puesto que sino tendrías que hacer un .setDate() y no tendrías este problema, porque le pasas el Date directamente.

Así que seguramente estás usando el .execute() y le pasas un String así a lo pelado:
Código Java:
Ver original
  1. st = con.createStatement();
  2. String sql = "insert into tabla (fecha) values ('" + data + "')";
  3. st.execute(sql);
Y entonces le tienes que dar formato a la fecha como yyyyMMdd para que MySQL lo interprete correctamente, si estas usando otra base de datos el mecanismo es el mismo pero puede cambiar las comillas.
Código Java:
Ver original
  1. SimpleDateFormat simple= new SimpleDateFormat("yyyyMMdd");
  2. st = con.createStatement();
  3. String sql = "insert into tabla (fecha) values ('" + simple.format(data) + "')";
  4. st.execute(sql);
Código MySQL:
Ver original
  1. insert into tabla (fecha) values ('20120123')

Saludos,
  #9 (permalink)  
Antiguo 24/01/2012, 02:22
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: tipo fecha de jsp a servlet

Sí que hago el setDate o creo que lo hago. A ver te explico un poco lo que tengo.
Una clase en la que declaro las variables de la BD. Ahí tenog declarado "Date fecha" y en esa clase tengo hechos los getters y setters. Luego tengo otra clase en la que ya hago todas las consultas que necesito hacer en la base de datos. Ahí tengo el insert así:
Código Java:
Ver original
  1. public boolean insertI0210(I0210 i0210) {
  2.      boolean ret=false;
  3.      String sqlQuery =  "INSERT INTO i0210 (fecha) VALUES ('"+i0210.getFecha()+"');";
  4.      try{
  5.          Statement stm = connection.createStatement();
  6.          stm.executeUpdate(sqlQuery);
  7.          ret= true;
  8.      }catch(SQLException e){
  9.          System.out.println(sqlQuery);
  10.          e.printStackTrace();
  11.          System.out.println("Error SQL Insert");
  12.      }
  13.      return ret;
  14. }

Desués tengo una clase en la que cojo los datos del formulario que es donde hago el getParameter() y el SimpleDateFormat y ahí hago esto:
Código JSP:
Ver original
  1. i0210.setFecha(data);
  2. claseI0210.insertI0210(i0210);
Y ese data es la fecha que cojo con el getParameter y convertida con el SimpleDateFormat.
Por cierto, en el insert también he hecho esto:
Código Java:
Ver original
  1. String sqlQuery =   "INSERT INTO i0210 (fecha) VALUES (str_to_date('"+i0210.getFecha()+"');";
Pero vamos que hasta que no se ponga la fecha bien, no sirve de nada.
  #10 (permalink)  
Antiguo 24/01/2012, 13:50
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: tipo fecha de jsp a servlet

Hola,

Cita:
Iniciado por elpre Ver Mensaje
Sí que hago el setDate o creo que lo hago.
En el ejemplo que mostraste no usas .setDate(), no estas usando ni prepared ni callable statement pero eso es otra cosa.

Cita:
Iniciado por elpre Ver Mensaje
Ahí tenog declarado "Date fecha" y en esa clase tengo hechos los getters y setters.
Pues es exactamente lo que escribí en el post anterior,

Código:
SimpleDateFormat simple =
  new SimpleDateFormat("yyyyMMdd");
String sqlQuery = "INSERT INTO i0210 (fecha) VALUES ('"+
simple.format(i0210.getFecha())+"');";
Saludos,
  #11 (permalink)  
Antiguo 25/01/2012, 02:52
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: tipo fecha de jsp a servlet

Bien, todo perfecto, gracias por la paciencia que has tenido que tener conmigo.

Etiquetas: jsp
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 08:50.