O simplemente podrias usar las funcion especificas de MySql, pero logicamente, tenes que usar el campo DATETIME, caso contrario nunca vas a poder preguntar por la hora
Código PHP:
$sql = 'SELECT * FROM TABLA
WHERE (DAY(fecha) BETWEEN '.$dia1.' and '.$dia2.' AND
(HOUR(fecha) BETWEEN '.$hora1.' and '.$hora2.')';
Espero haber sido de utilidad,
Saludos,