Hola enriquecm:
Compara por un lado sólo las fechas y por otro lado sólo las horas... con las funciones DATE() y TIME() puedes extraer sólo la fecha y sólo la hora de un campo tipo datetime respectivamente... sería más o menos así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.08 sec)
-> ('2011-10-14 09:07:00', 'Shrek de Fiona'),
-> ('2011-10-14 09:06:00', 'Pedro Marmol'),
-> ('2011-10-14 09:14:00', 'Micky Mouse'),
-> ('2011-10-14 09:17:00', 'Memin Pinguin'),
-> ('2011-11-14 09:17:00', 'Shrek de Fiona'),
-> ('2011-11-14 09:06:00', 'Pedro Marmol'),
-> ('2011-11-14 09:04:00', 'Micky Mouse'),
-> ('2011-11-14 09:13:00', 'Memin Pinguin');
Query OK, 8 rows affected (0.06 sec)
+---------------------+----------------+
| tiempo | nombre |
+---------------------+----------------+
| 2011-10-14 09:07:00 | Shrek de Fiona |
| 2011-10-14 09:06:00 | Pedro Marmol |
| 2011-10-14 09:14:00 | Micky Mouse |
| 2011-10-14 09:17:00 | Memin Pinguin |
| 2011-11-14 09:17:00 | Shrek de Fiona |
| 2011-11-14 09:06:00 | Pedro Marmol |
| 2011-11-14 09:04:00 | Micky Mouse |
| 2011-11-14 09:13:00 | Memin Pinguin |
+---------------------+----------------+
+---------------------+----------------+
| tiempo | nombre |
+---------------------+----------------+
| 2011-10-14 09:14:00 | Micky Mouse |
| 2011-10-14 09:17:00 | Memin Pinguin |
| 2011-11-14 09:17:00 | Shrek de Fiona |
| 2011-11-14 09:13:00 | Memin Pinguin |
+---------------------+----------------+
Observa que la primer parte utiliza la función DATE y la función BETWEEN para traer los registros de entre esas fechas, en la segunda parte simplemente compara que la hora sea después de las 9:10 (tomando la tolerancia). para el límite de los 30 minutos podrías usar también un between.
Saludos
Leo.