Vous pouvez utiliser la fonction DATEPART()
SELECT * FROM record
WHERE (DATEPART(yy, register_date) = 2009
AND DATEPART(mm, register_date) = 10
AND DATEPART(dd, register_date) = 10)
Je trouve cette méthode facile à lire, car elle ignore la composante temporelle et vous n'avez pas besoin d'utiliser la date du lendemain pour restreindre votre sélection. Vous pouvez aller à une granularité plus ou moins grande en ajoutant des clauses supplémentaires, en utilisant le code DatePart approprié, par exemple
AND DATEPART(hh, register_date) = 12)
pour obtenir des records entre 12 et 1.
Consultez la documentation MSDN DATEPART pour la liste complète des arguments valides.