É o seguinte, eu tenho uma JPQL, que retorna um count para mim, caso seja acima de 0 eu sei que é true. O código:
SELECT count(*) > 0
FROM reserva r
WHERE
r.locais = :codigo_locais
AND r.dataReserva = :data_reserva
AND hora_inicial BETWEEN r.horaInicial AND r.horaFinal
OR hora_final BETWEEN r.horaInicial AND r.horaFinal
problema É o seguinte, tenho uma query onde verifico o horário, caso o horário bata ele me retorna 1, mas ele até funciona fora do range.Exemplo: 8:00 às 12:00, caso eu queira salvar 7:30 às 15:00, ele bate no range, mas quando coloco 8:30 às 11:00, ele permite de boas.
alguém poderia me dar um help ? quero que ele não deixe nos dois casos banco é o postgresql
O que tu tens, na realidade, é como se fosse assim
select count (*) > 0 from reserva r
where (r.locais =:codigo_locais and r.dataReserva =:data_reserva AND hora_inicial BETWEEN r.horaInicial AND r.horaFinal)
OR (hora_final BETWEEN r.horaInicial AND r.horaFinal)
E o que queres, presumo que seja algo assim
select count (*) > 0 from reserva r
where r.locais =:codigo_locais and r.dataReserva =:data_reserva
AND ((hora_inicial BETWEEN r.horaInicial AND r.horaFinal)
OR (hora_final BETWEEN r.horaInicial AND r.horaFinal))
Ou, simplificando a lógica
select count (*) > 0 from reserva r
where r.locais =:codigo_locais and r.dataReserva =:data_reserva
AND hora_inicial <= r.horaFinal
AND hora_final => r.horaInicial
SELECT
COUNT(*) > 0
FROM
Reserva r
WHERE
r.local = :reseva.local
AND
r.data = :reserva.data
AND
r.horaInicial >= :reseva.horaInicial
AND
r.horaFinal <= :reseva.horaFinal
Agora ele não deixa salvar o dia todo, eu implementei esse segundo, basicamente se eu estiver um 8:00 às 12:00 ele não deixa salvar nem das 15:00 ás 18:00.