Potresti usare la funzione DATEPART()
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
Trovo in questo modo facile da leggere, poiché ignora la componente temporale e non è necessario utilizzare la data del giorno successivo per limitare la selezione. Puoi passare a una granularità maggiore o minore aggiungendo clausole extra, utilizzando il codice DatePart appropriato, ad es.
AND DATEPART(hh, register_date) = 12)
per ottenere record realizzati tra 12 e 1.
Consulta i documenti MSDN DATEPART per l'elenco completo degli argomenti validi.