Você pode usar a função DATEPART()
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
Acho essa maneira fácil de ler, pois ignora o componente de hora e você não precisa usar a data do dia seguinte para restringir sua seleção. Você pode ir para maior ou menor granularidade adicionando cláusulas extras, usando o código DatePart apropriado, por exemplo
AND DATEPART(hh, register_date) = 12)
para obter registros feitos entre 12 e 1.
Consulte os documentos do MSDN DATEPART para obter a lista completa de argumentos válidos.