Curiosamente un motor sql deberia hacer esto super simple (ya que esto es manejo basico de relaciones), pero desafortunadamente todo depende de las abilidades programaticas de cada motor.
Esta es la forma basica (ej en python):
Código PHP:
>>> x = range(1,10)
>>> y = range(8,20)
>>> xs = set(x)
>>> xs.intersection(y)
set([8, 9])
El problema es como generar la lista de fechas en memoria, y eso depende de tu motor. La idea es hacer algo como:
Código SQL
[-]
SELECT Fecha FROM FuncionGeneradora(Inicio, Fin)
-- 1 registro por cada hora entre inicio y fin
Y de ahi usas sql estandar para la interseccion