Podrías usar la función DATEPART()
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
Encuentro que esta forma es fácil de leer, ya que ignora el componente de tiempo y no tiene que usar la fecha del día siguiente para restringir su selección. Puede ir a una mayor o menor granularidad agregando cláusulas adicionales, usando el código DatePart apropiado, por ejemplo,
AND DATEPART(hh, register_date) = 12)
para obtener registros hechos entre 12 y 1.
Consulte los documentos de MSDN DATEPART para ver la lista completa de argumentos válidos.