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

Consulta SQL + Fechas

Estas en el tema de Consulta SQL + Fechas en el foro de Java en Foros del Web. Hola foreros! Me he encontrado con un probemilla en un acceso a datos que intento hacer y no puedo solucionarlo. EL problema es el siguiente: ...
  #1 (permalink)  
Antiguo 03/04/2008, 14:34
Avatar de Payin  
Fecha de Ingreso: mayo-2007
Mensajes: 92
Antigüedad: 17 años
Puntos: 0
Consulta SQL + Fechas

Hola foreros! Me he encontrado con un probemilla en un acceso a datos que intento hacer y no puedo solucionarlo. EL problema es el siguiente: quiero hacer una consulta HQL con dos parametros, el cual uno es una fecha. Al intentarlo hacer, HIbernate me tira errores de parseo y en la consulta misma. El código que intento hacer, simplificadamente es:


public Infovalle getInfoByNombreAndFecha(String nombre, Calendar fechaAlta) {
Session session = FactorySingleton.getInstance().openSession();
Transaction tx = session.beginTransaction();
String hql = "select from Infovalle where nombre=' " + nombre
+ " ' and fecha_alta=' " + fechaAlta + " ' ";
Query q = session.createQuery(hql);
List<Infovalle> lista = q.list(); aqui tira el error
tx.commit();
session.close();
if (!lista.isEmpty())
return lista.get(0);
else
return null;
}

si bien el problema sé que está en cómo manejo la fecha y cómo la meto en la consulta, no lo sé resolver. si alguien me podría dar una ayudita sería muy amable de su parte.
bueno, muchisimas gracias por su tiempo. saludos!

Me olvidaba de decirlo, cuando yo inserto la fecha en fechaVenc lo hago de la forma Calendar.getInstance()
  #2 (permalink)  
Antiguo 03/04/2008, 14:49
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Consulta SQL + Fechas

Has comprobado cual es la cadena resultante de lo que haces:
Cita:
String hql = "select from Infovalle where nombre=' " + nombre + " ' and fecha_alta=' " + fechaAlta + " ' ";
?
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 03/04/2008, 15:03
Avatar de Payin  
Fecha de Ingreso: mayo-2007
Mensajes: 92
Antigüedad: 17 años
Puntos: 0
Re: Consulta SQL + Fechas

Hola Green! Justo venia a postear eso, y además a decir que soy una bestia al no haberlo comprobado por mi mismo. SI pongo un out, la consulta me la tira "bien", solo que en lugr de la fecha me pone:

java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,len ient=true,zone=sun.util.calendar.ZoneInfo[id="America/Buenos_Aires",offset=-10800000,dstSavings=0,useDaylight=false,transition s=58,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,Y EAR=2008,MONTH=4,WEEK_OF_YEAR=14,WEEK_OF_MONTH=1,D AY_OF_MONTH=7,DAY_OF_YEAR=94,DAY_OF_WEEK=5,DAY_OF_ WEEK_IN_MONTH=1,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINU TE=59,SECOND=52,MILLISECOND=906,ZONE_OFFSET=-10800000,DST_OFFSET=0]

Es decir, la fecha ahi dentro está (07/04/2008). pero me tir todo el objeto. alguna forma de sacar solo el dia, mes y año?

si a la fecha le pongo un ToString() me pasa lo mismo :S


---

Recien terminé de hacer esto:

String fecha = fechaVenc.YEAR+"-"+fechaVenc.MONTH+"-"+fechaVenc.DAY_OF_MONTH;
System.out.println(fecha);

y para la fecha 07-04-2008

me devolvio 1-2-5

:(

Última edición por Payin; 03/04/2008 a las 15:13
  #4 (permalink)  
Antiguo 04/04/2008, 00:00
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Consulta SQL + Fechas

Es que eso es lo que estas imprimiendo .

Quizá deberías echarle una mirada al API , tanto al del JDK, si quieres saber por que te pinta 1-2-5, y al de Hibernate, manual+API, para saber como pasarle una fecha a un Query como parametro. Hacerlo concatenando cadenas es una solucion muy fragil, propensa a errores por formato de fecha, y con problemas de seguridad.

Es mucho mejor usar "bound parameters", el equivalente a PreparedStatements en JDBC:
http://www.hibernate.org/hib_docs/re...ing-parameters

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 04/04/2008, 08:44
Avatar de Payin  
Fecha de Ingreso: mayo-2007
Mensajes: 92
Antigüedad: 17 años
Puntos: 0
Re: Consulta SQL + Fechas

ahi lo leo. muchas gracias green!


tu como utilizas las fechas? porque como las guardo yo, en la BD aparecen bien, la cosa es al traerlas e imprimirlas :P
  #6 (permalink)  
Antiguo 04/04/2008, 09:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Consulta SQL + Fechas

En la BD las guardo como fechas, lo de "aparecen bien" quiere decir que en realidad el programa que usas para visualizar tu BDD ya te lo formatea adecuadamente. Por que las fechas internamente se suelen guardar como el numero de milisegundos a partir de una fecha base .

Lo que hay que aprender es a comparar obtener y formatear las fechas adecuadamente, ya que no son datos "simples" como un string o un numerico. Si utilizas los "bound parameters", Hibernate ya se encarga de las transformaciones adecuadas para la comparacion etc. (ojo que una fecha no es solo un dia, si no que es dia + tiempo). Para formatearlas, SimpleDateFormat, por ejemplo, es una gran ayuda.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 04/04/2008, 09:28
Avatar de Payin  
Fecha de Ingreso: mayo-2007
Mensajes: 92
Antigüedad: 17 años
Puntos: 0
Re: Consulta SQL + Fechas

Muchas gracias. investigaré esa informacion :D
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 06:47.