Una tabla tiene una columna timestamp. Un valor de muestra en eso podría ser 2010-03-30 13:42:42. Con Hibernate, estoy haciendo una consulta de rango Restrictions.between ("column-name", fromDate, toDate).Consulta de fecha con Hibernate en Timestamp Columna en PostgreSQL
El mapeo de Hibernate para esta columna es el siguiente.
<property name="orderTimestamp" column="order_timestamp" type="java.util.Date" />
Digamos, yo quiero averiguar todos los registros que tienen la fecha 30ma marzo de 2010 y marzo de 2010. 31a Una consulta rango en este campo se realiza de la siguiente manera.
Date fromDate = new SimpleDateFormat("yyyy-MM-dd").parse("2010-03-30");
Date toDate = new SimpleDateFormat("yyyy-MM-dd").parse("2008-03-31");
Expression.between("orderTimestamp", fromDate, toDate);
Esto no funciona.
La consulta se convierte a marcas de tiempo respectivas como "2010-03-30 00:00:00" y "2010-03-31 00:00:00". Entonces, todos los registros para el 31 de marzo de 2010 son ignorados.
Una solución simple a este problema podría ser tener la fecha de finalización como "2010-03-31 23:59:59". Pero me gustaría saber si hay forma de hacer coincidir solo la parte de la fecha de la columna de la marca de tiempo.
Además, ¿el Expression.between()
incluye ambos límites? La documentación no arroja ninguna luz sobre esto.
Creo que siempre es exclusivo en ambos extremos. ¿Por qué no eliminas 1 milisegundo y agregas 1 milisegundo a cada uno de ellos? – jishi
@jishi depende de la base de datos (y la mayoría de las veces inclusive, creo). –
Shashikant ¿podría resolver esto? – changeme