Si no pones AND en vez de OR en la sentencia en la comparación te dará siempre el mismo error de datos devueltos que usando BETWEEN.
Para tomar
sólo los registros comprendidos entre las dos cotas debe ir
si o si AND, no OR.
Si lo usas así
Código sql:
Ver originalSELECT *
FROM tbduser
WHERE usuario='Miguel' AND (Hr_i>='04:00:00' AND Hr_f<='13:00:00');
Te devolverá esto:
Código:
SELECT * FROM tbduser WHERE usuario='Miguel' and (Hr_i>='04:00:00' or Hr_f<='13:00:00');
+--------+---------+--------------+------+----------+----------+-------------+-------------+---------------------+---------------------+
| Codigo | Usuario | Tuso | Hr_i | Hr_f | User_Insert | User_Update | Date_Insert | Date_Update |
+--------+---------+--------------+------+----------+----------+-------------+-------------+---------------------+---------------------+
| 36 |Miguel | 2 | 05:00:00 | 07:00:00 | Carlo |Carlo | 2009-05-25 00:00:00 | 2009-05-25 00:00:00 |
+--------+---------+--------------+------+----------+----------+-------------+-------------+---------------------+---------------------+
1 rows in set (0.00 sec)