Я пытаюсь создать запрос для временного интервала с помощью QueryDSL (включая начало, эксклюзивную дату окончания).
В документация QueryDSL. Я обнаружил, что public BooleanExpression between(Expression<T> from, Expression<T> to);
является эксклюзивным с обеих сторон,
Получить первое ‹ это ‹ второе выражение
однако он преобразуется в Oracle SQL BETWEEN
, который включает обе стороны
(эквивалентно first <= this <= second
).
такой QueryDSL:
[...]
person.name.like(n)
.and(person.birthdate.between(from, to))
[...]
переводится в Oracle SQL следующим образом:
SELECT *
FROM PERSON
WHERE NAME LIKE n
AND BIRTHDATE BETWEEN from AND to;
Кто-нибудь знает причины/логику этого?
Это просто "гнилая" документация?
Ясно, что между мной не сработает никоим образом.
Должен ли я использовать более неуклюжий
person.name.like(n)
.and(person.birthdate.goe(from)
.and(person.birthdate.lt(to))
или есть чистое решение, которое делает то, что я хочу?
between "from" and "to" - 1
? (при условии, чтоto_
является значениемDATE
- person a_horse_with_no_name   schedule 03.08.2015between "from" and "to" - interval '1' second
- person Ben   schedule 03.08.2015