Necesito poder comparar dos fechas, solo basadas en el año y el mes (es decir, sin tomar nota del día), y eso en JAVA y HQL.Comparar dos fechas basadas en el año-mes, sin tener en cuenta el día
Digamos que necesito comprobar si d1
es menor o igual a d2
. Esto es lo que he intentado:
JAVA
calendar.setTime(d1);
int y1 = calendar.get(Calendar.YEAR);
int m1 = calendar.get(Calendar.MONTH);
calendar.setTime(d2);
int y2 = calendar.get(Calendar.YEAR);
int m2 = calendar.get(Calendar.MONTH);
return y1 <= y2 && m1 <= m2;
HQL
select item from Item item
where year(item.d1) <= year(:d2)
and month(item.d1) <= month(:d2)
El algoritmo es el mismo en las piezas tanto de código anterior, pero es equivocado:
2011-10 LTE 2012-09
debería devolvertrue
pero devolveráfalse
porque2011 < 2012
pero10 !< 09
Si uso un OR
en lugar de un AND
, sigue siendo malo:
2013-01 LTE 2012-05
deberían volverfalse
y luego se volverátrue
porque2013 !< 2012
pero01 < 05
Entonces, ¿cómo debo procesar? Por favor, lo necesito para JAVA y HQL.
Hombre, por supuesto, ¡tienes razón! Gracias ';)' – sp00m