Sara, miembro de nuestro staff, nos ha hecho el favor de redactar esta sección porque domina perfectamente dicho tema.
Solución:
Debería echar un vistazo a la documentación de referencia. Está bien explicado.
En su caso, creo que no puede usar between porque necesita pasar dos parámetros
Entre – findByStartDateBetween… donde x.startDate entre ?1 y ?2
En tu caso fíjate en usar una combinación de LessThan
o LessThanEqual
con GreaterThan
o GreaterThanEqual
- Menor que/menor que igual
LessThan – findByEndLessThan … donde x.start< ?1
LessThanEqual findByEndLessThanEqual … donde x.start <= ?1
- Mayor que/Mayor que igual
GreaterThan – findByStartGreaterThan … donde x.end> ?1
GreaterThanEqual – findByStartGreaterThanEqual … donde x.end>= ?1
Puedes usar el operador And
y Or
para combinar ambos.
Utilicé la siguiente solución para esto:
findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);
También puede escribir una consulta personalizada usando @Query
@Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
public List getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);
Comentarios y puntuaciones
Si posees alguna incertidumbre y forma de ascender nuestro enunciado puedes ejecutar un informe y con placer lo interpretaremos.