Ver Mensaje Individual
  #13 (permalink)  
Antiguo 26/10/2009, 06:07
Avatar de elAntonie
elAntonie
 
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: pasar String a Date

Para que te hagas a la idea, te lo pongo estilo jdbc. Ahora tu trasladalo a hibernate o a lo que quieras.

Código:
public void obtenerFechas (Connection con) throws SQLException
{
       String consulta = "select id,fecha1 from usuarios where login='pepito'";
       PreparedStatement ps = null;
          ps  = con.prepareStatement("ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY'"); 
          ps.execute();
          ps  = con.prepareStatement(consulta); 
          ps.execute();
}
Tu tienes una conexion (una sesion de BD). Y tu estas en España, por lo que tu quieres que las fechas te laas devuelva en formato 'cristiano', usease, DD/MM/YYYY
Ahora imaginate que tienes una base de datos oracle, que si no ha sido cambiada por el administrador de BBDD, coje por defecto las fechas en formato americano (MM/DD/YYYY). Los 'jodidos' angicanos, que tienen que hacerlo todo distinto.

Por todo ello tienes dos opciones, o coges las fechas en formato americano, es decir, tu programacion se basa en la BBDD o cambias la BBDD para que se base en tu programa (todo esto a muy grandes rasgos).

La primera opcion, es peligrsisima, por el ejemplo que te puse antes. (BBDD de pruebas en formato español y BBDD de produccion en formato americano, por ejemplo), por lo que la unica viable, seria la segunda opcion. Asi no te tendrias que preocupar del idioma de la BBDD.

Esta segunda opcion seria el alter session. con ello consigues, que mientras tu conexion este viva, la tengas tu. Puedes 'amoldarla' para evitarte estos inconvenientes.

En el ejemplo que te he puesto, primero le dices a la BBDD que quieres las fechas en formato dd/mm/yyyy. Y que te importa un pimiento como esten en ella.
En la segunda al ejecutar tu consulta te devolvera las fechas en en formato que tu le dices.

Estos cambios SOLO tienen efecto en tu sesion. Por lo que el resto de las conexiones NO se ven afectadas.

Saludos.

PD. Si por ejemplo pides la fecha en formato largo, te devolveria, por ejemplo, October, 26 2009 Monday. Si lo quieres en castellano, seria.

alter session set nls_date_language='SPANISH'

Y los Monday y October, pasarian por arte de magia al lenguaje patrio.