Comparação De 2 Datas
#1
Posted 10/01/2011, 13:46
No sql já fiz consultas usando o between para comparar 2 campos diferentes!
Tenho 2 campos de datas, IN e OUT.
Preciso verificar se uma data está disponivel, por exemplo: tenho no meu BD as datas 10/01 a 15/01. Preciso fazer uma consulta e ver se na data de 13/01 a 15/01 tenho algo registrado no BD.
Valeu, obrigado a todos.
#2
Posted 10/01/2011, 13:50
WHERE '2011-01-13' BETWEEN Entrada AND Saida
#3
Posted 10/01/2011, 14:11
Edição feita por: rafael50, 10/01/2011, 14:11.
#4
Posted 10/01/2011, 14:38
10 | 11 | 12 | 13 | 14 | 15 Registro do Banco 8 | 9 | 10 | 11 | 12 | 13 Consulta 1 12 | 13 | 14 | 15 | 16 | 17 Consulta 2 11 | 12 | 13 Consulta 3 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 Consulta 4
WHERE ($Data1 <= Entrada AND $Data2 BETWEEN Entrada AND Saida) OR
($Data2 >= Saida AND $Data1 BETWEEN Entrada AND Saida) OR
($Data1 >= Entrada AND $Data2 <= Saida) OR
($Data1 <= Saida AND $Data2 >= Entrada)
Veja se vai.
#5
Posted 10/01/2011, 15:00
valeuu!
funcionou, mas nao está 100%. dificil de explicar aqui o pq!
um dos problemas: quando a reserva for do dia 15 a 17 ! essa consulta retorna 4 registros! baseado no q vc escreveu acima !
Edição feita por: rafael50, 10/01/2011, 15:15.
#6
Posted 10/01/2011, 15:26
#7
Posted 10/01/2011, 15:38
eu queria q a query retornace 0 ou 1 para quando for invalida ou valida a consulta! será q da p fazer isso em, uma query soh ?
Edição feita por: rafael50, 10/01/2011, 15:40.
#8
Posted 10/01/2011, 16:08
Espera aí... Já escrevo.
---
Sobre o 0 e 1, pode tentar:
SELECT EXISTS(<sua query aqui>)
Edição feita por: LeoB, 10/01/2011, 16:13.
#9
Posted 10/01/2011, 16:21
#10
Posted 10/01/2011, 16:26
WHERE ($Data1 <= Entrada AND $Data2 > Entrada) OR
($Data1 < Saida AND $Data2 > Saida) OR
($Data1 >= Entrada AND $Data2 <= Saida) OR
($Data1 <= Entrada AND $Data2 => Saida)
Tenta assim.
#11
Posted 10/01/2011, 16:41
select count(*) as total FROM ib_reservas WHERE ('2011/01/10' <= reserva_dtIn AND '' > reserva_dtIn) OR ('2011/01/10' < reserva_dtOut AND '' > reserva_dtOut) OR ('2011/01/10' >= reserva_dtIn AND '' <= reserva_dtOut) OR ('2011/01/10' <= reserva_dtIn AND '' >= reserva_dtOut)
o retorno eu uso um count(*) será ?
#12
Posted 10/01/2011, 16:57
#13
Posted 10/01/2011, 17:41
Saiu '' no lugar da segunda data...
é verdade, to dando uma testada, ja posto aki !
valeuuuu
entao, parece deu certo sim caraaa !! tentei tdas as possibilidades aqui, to fazendo o select retornar um count(*) mesmo, se retornar um valor > 0 é pq nao da p fazer a reserva no periodo !
brigadaoo caraaa!!! quando eu finalizar te mostro !
Edição feita por: rafael50, 10/01/2011, 17:44.
#14
Posted 12/01/2011, 22:35
um NOT BETWEEN não resolveria?
... WHERE $dat_ini_reserva NOT BETWEEN entrada AND saida OR $dat_fim_reserva NOT BETWEEN entrada AND saida ...
#15
Posted 13/01/2011, 01:36
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)